Django が実行している生の SQL クエリを確認するにはどうすればいいですか? 質問する

Django が実行している生の SQL クエリを確認するにはどうすればいいですか? 質問する

クエリ実行中に Django が実行している SQL を表示する方法はありますか?

ベストアンサー1

ドキュメントのFAQを参照してください: "Django が実行している生の SQL クエリを確認するにはどうすればよいでしょうか?

django.db.connection.queriesSQL クエリのリストが含まれています:

from django.db import connection
print(connection.queries)

クエリセットには、query属性実行するクエリを含む:

print(MyModel.objects.filter(name="my name").query)

次の理由により、クエリの出力は有効な SQL ではないことに注意してください。

「Django は実際にはパラメータを補間しません。クエリとパラメータをデータベース アダプタに別々に送信し、適切な操作を実行します。」

Djangoのバグレポートより#17741

そのため、クエリ出力をデータベースに直接送信しないでください。

たとえば、特定の期間に実行されているクエリの数を確認するためにクエリをリセットする必要がある場合は、reset_queries次を使用できますdjango.db

from django.db import reset_queries
from django.db import connection

reset_queries()
# Run your query here
print(connection.queries)
>>> []

おすすめ記事