Django的objects.all()杀死了python

imk*_*ost 1 python django

我有一个Django项目.有MyModelmodels.py.这种模式有4 000 000个实例.

我打破了这个脚本:

for m in MyModel.objects.all():
    if len(m.phone) < 10 or len(set(m.phone)) <= 2:
        m.delete()
Run Code Online (Sandbox Code Playgroud)

但是,它杀死了python(只是打印'杀死').

我知道,问题在于实例数量.但我怎么能迭代所有这些呢?

Ale*_*yev 6

您可以先尝试计算对象,然后使用切片版本进行迭代.就像是:

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
Run Code Online (Sandbox Code Playgroud)