へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)! #vZkt8fc6J

Django、connection.queriesでSQLクエリが見えない場合、またはテストの中でSQLクエリを見る方法(How to show queries in django tests)

前提

DEBUG = True

になっていなければいけない

FAQ: Databases and models | Django documentation | Django

Make sure your Django DEBUG setting is set to True.

Make sure (*´∀`*)Oh Yeah

クエリを見る方法

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

テストでは

テストでのデフォルト値

DEBUG = False

になっている
理由 → SQLログなんか毎回とってたらテスト遅くなる→テストのデフォルト値がDEBUG = Trueだと嫌だ
Writing and running tests | Django documentation | Django

設定をオーバーライドする必要があるね!

stackoverflow.com

@override_settings(DEBUG=True)
def test_hoge(self):
    ( Something test ... )

とか

def test_hoge(self):
    settings.DEBUG = True

とかが重宝する。特に上。Celery使ったときのテストとかに。

おまけ

解決した後にググったら呆気無く見つかった
何が原因かを知るとググり方が変わるから見つかるのだろう……恐ろしいことだ
stackoverflow.com