我有一个 Django 项目。 models.py
中有MyModel
。该模型有 4 000 000 个实例。
我执行这个脚本:
for m in MyModel.objects.all():
if len(m.phone) < 10 or len(set(m.phone)) <= 2:
m.delete()
但是,它会杀死 python(只打印“Killed”)。
我知道,问题出在实例数量上。 但是我怎样才能迭代所有这些呢?
最佳答案
您可以尝试先对对象进行计数,然后使用切片版本对它们进行迭代。像这样的东西:
step = 10
count = MyModel.objects.count()/step
for i in xrange(count):
for m in MyModel.objects.all()[i*step:(i+1)*step]:
# doing something with m
关于python - Django 的 objects.all() 杀死 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12253328/