Skip to main content
 首页 » 编程设计

python之Django 的 objects.all() 杀死 python

2025年05月04日21落叶无声

我有一个 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