2013年1月8日火曜日

Djangoで、デバック用のSQLクエリの表示

Django(1.4.2)で、デバック用のSQLクエリの表示です。今ごろになって、ようやく設定できました(笑)。いろいろ試してみましたが、coordinatesさんの設定例がベストです。これで目の前が、開けた気がします。

views.py
queryset = MyModel.objects.all()
print queryset.query
テンプレート上で確認する場合は、以下の通り。settings.pyに出力先を設定して、テンプレートを準備すれば、OKです。

settings.py
DEBUG = True
TEMPLATE_DEBUG = True
# SQLクエリを表示させたい端末のIPを指定
INTERNAL_IPS = ('127.0.0.1', '192.168.1.1',)
/templates/base.html
{% if debug %}
    {% if sql_queries %}
        <h3>Queries</h3>
        <table>
        <thead>
        <tr>
            <th scope="col">#</th>
            <th scope="col">SQL</th>
            <th scope="col">Time</th>
        </tr>
        </thead>
        <tbody>
        {% for query in sql_queries %}
            <tr class="{% cycle odd,even %}">
                <td>{{ forloop.counter }}</td>
                <td>{{ query.sql|escape }}</td>
                <td>{{ query.time }}</td>
            </tr>
        {% endfor %}
        </tbody>
        </table>
    {% endif %}
{% endif %}
実際にSQLクエリが表示されている様子。


参考サイト
デバッグでSQLのログを出力させる(coordinatesさん)

0 件のコメント:

コメントを投稿