我在一家拥有大型数据库的公司工作,我想对它执行一些更新查询,但它似乎导致巨大的内存泄漏,查询如下
c= CallLog.objects.all()
for i in c:
i.cdate = pytz.utc.localize(datetime.datetime.strptime(i.fixed_date, "%y-%m-%d %H:%M"))
i.save()
我是在Django的交互式shell中编写的
我什至尝试使用
with transaction.atomic()
但这没用,你知道我该如何发现
我正在处理的数据集约为2700万
fixed_date是计算所得的属性
您可以尝试这样的事情:
from django.core.paginator import Paginator
p = Paginator(CallLog.objects.all().only('cdate'), 2000)
for page in range(1, p.num_pages + 1):
for i in p.page(page).object_list:
i.cdate = pytz.utc.localize(datetime.datetime.strptime(i.fixed_date, "%y-%m-%d %H:%M"))
i.save()
切片查询集不会仅将内存中的所有对象加载到一个子集,而是会在命中数据库之前为SQL查询添加限制和偏移量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句