django - 删除了多少行?

标签 django django-models mysql django-orm

是否可以检查查询删除了多少行?

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/

相关文章:

python - 如何扩展 django oscar 客户模型字段?

Django 批量更新/插入性能

c# - NHibernate回滚似乎不起作用

mysql - 执行连接时使用 LIMIT 的表列值

python - Django 。对 Viewset 的 @link 或 @action 方法进行分页

Django 在尝试保存对象属性时抛出 "invalid literal for int() with base 10: ' '"

javascript - 如何在查询外部 django View 时刷新部分 DOM HTML

python - GAE 错误 django.core.exception

php - 如何使用 PHP 和 MySQL 使用链接和 Get 来按字母顺序对表中的列进行排序?

django - 在 Django 部署中维护内容类型 pk 完整性