是否可以检查查询删除了多少行?
queryset = MyModel.object.filter(foo=bar)
queryset.delete()
deleted = ...
或者我应该为此使用交易吗?
@transaction.commit_on_success
def delete_some_rows():
queryset = MyModel.object.filter(foo=bar)
deleted = queryset.count()
queryset.delete()
PHP + MySQL 示例:
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n", mysql_affected_rows());
最佳答案
在很多情况下,您想知道删除了多少行,例如,如果您根据删除的行数做某事。通过执行 COUNT 来检查它会产生额外的数据库负载并且不是原子的。
queryset.delete()
方法会立即删除对象并返回删除的对象数和包含每种对象类型的删除数的字典。
查看文档以获取更多详细信息:https://docs.djangoproject.com/en/stable/topics/db/queries/#deleting-objects
关于django - 删除了多少行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3342395/