DjangoのQuerySetが実行するSQLの確認方法💡
.queryを利用してprint()で出力
これが一番手軽?
ただし、公式リファレンスを見る限りパブリックな属性ではなさそう
https://docs.djangoproject.com/ja/5.0/ref/models/querysets/#queryset-api
QuerySet の query パラメータは、特殊なクエリのサブクラスが内部のクエリ状態を再構築できるようにするために存在します。このパラメータの値はクエリの状態の不透明な表現であり、パブリックAPIの一部ではありません。
実際にコードを見てみると、以下のようになっている
code:Python
@property
def query(self):
if self._deferred_filter:
negate, args, kwargs = self._deferred_filter
self._filter_or_exclude_inplace(negate, args, kwargs)
self._deferred_filter = None
return self._query
connection.queriesで確認する方法もあるらしい
https://www.denzow.me/entry/2018/06/13/234953
django-debug-toolbarを利用する
https://jisou-programmer.beproud.jp/DjangoORMとの付き合い方/60-Django_ORMでどんなSQLが発行されているか気にしよう.html
ここではLOGGINGが紹介されてい
LOGGINGも良いらしい
print()とLOGGINGの違いって何だろう
ただし、DRFだとできないみたい
django-silkも気になっている
https://github.com/jazzband/django-silk
結構記事も出てくる
一番まとめられていそうだったのがakiyokoさんのブログ
https://akiyoko.hatenablog.jp/entry/2016/08/04/232531