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



Feedbacks

Tags