7

クエリで削除された行数を確認することはできますか?

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());
4

2 に答える 2

4

削除された行の数に基づいて何かを行う場合など、削除された行の数を知りたい状況はたくさんあります。COUNT を実行してチェックすると、余分なデータベース負荷が発生し、アトミックではありません。

メソッドはqueryset.delete()すぐにオブジェクトを削除し、削除されたオブジェクトの数と、オブジェクト タイプごとの削除数を含むディクショナリを返します。詳細については、ドキュメントを確認してください: https://docs.djangoproject.com/en/stable/topics/db/queries/#deleting-objects

于 2016-04-26T17:16:56.073 に答える