0

私はdjangoでシステムを作成していますが、データベースでSQLの「選択」クエリが実行されるたびに呼び出されるシグナルがあると非常に便利です。つまり、「pre_select」または「post_select」シグナル メソッドのようなものがあるかどうかは誰にもわかりませんか?

django docs でシグナル「connection_created」を見つけましたが、それを使用する方法の手がかりを見つけることができず、それを呼び出したモデルへのアクセスについてはあまり知りませんでした。公式ドキュメントには存在すると書かれていますが、簡単な使用例はありません... =/

編集: connection_created は、接続が作成されたときにのみ機能するため (その名前が示すように)、まだ解決策がありません =/.

私が望むものの例は、個別のオブジェクトでこのクエリを実行することです:

ExampleObject1.objects.filter(attribute=somevalue)
ExampleObject2.objects.filter(attribute=somevalue)
ExampleObject3.objects.filter(attribute=somevalue)

したがって、データやログなどを脅かすために、各クエリがデータベースに送信される直前に、各クエリからデータを受信する関数が呼び出されます。django ログシステムは似たようなものを使用しているように見えるため、django にはそのような機能が存在すると思います。

どんな助けでも大歓迎です。前もって感謝します!

4

1 に答える 1

1

http://dabapps.com/blog/logging-sql-queries-django-13/から

シグナルの形式ではありませんが、すべてのクエリを追跡できます。カスタマイズされたログ ハンドラーを提供することで、特定の選択を追跡できるようにする必要があります。

import logging
l = logging.getLogger('django.db.backends')
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())

#make your queries now...
于 2013-02-19T09:44:52.663 に答える