如何从数据库中删除大量对象

时间:2013-01-09 08:34:18

标签: django django-models

我尝试通过执行以下命令一次删除超过20,000,000个对象:

MyModel.objects.filter(some_field__lt=100).delete()

但我不能,因为内存不足(1GB VPS)。是不好的方法还是什么?怎么做?

2 个答案:

答案 0 :(得分:4)

在这种情况下,我认为最好使用原始SQL查询https://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly

cursor.execute("DELETE FROM mymodel WHERE some_field < %s", [value])

答案 1 :(得分:2)

尝试限制所选内容MyModel.objects.filter(some_field__lt=100).only('id').delete()

或者如果需要,获取查询并在django之外执行查询 MyModel.objects.filter(some_field__lt=100).query