Djangoが生成するSQLとコストのデバッグアウト

2006/04/09 10:37

※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】

Python Workshop the Edge2006 の懇親会で、「SQLのデバッグアウト」機能はないのかという話があったので、Middlewareをちょいと書いてみました(MagicRemoval 2509で動作確認)。

単にDjangoデフォルトで持っているデバッグ情報をprintするだけです。

エラー処理とかしていません。

また、DEBUGをTrueにしてあるときのみ出力します。

django.middlewareにdebug.pyというファイル名で作ってください。

作ったら、あとはsettings.pyのMIDDLEWARE_CLASSESに"django.middleware.debug.DBDebugMiddleware"を追加するだけです。

Create file named debug.py as below,and put it under django/middleware directory. Add "django.middleware.debug.DBDebugMiddleware" line to MIDDLEWARE_CLASSES(settings.py). It works only when settings.DEBUG is TRUE.

  from django.conf import settings
  from django.db import connection

  class DBDebugMiddleware:
      """
      "DBDebug" middleware for debug out O/R Mapper's SQL:
      """

      def process_response(self, request, response):
          if settings.DEBUG :
              for query in connection.queries:
                  print "cost: %s \n sql:%s" % (query['time'], query['sql'])
          return response

Prev Entry

Next Entry