Django tips: 查看当前Request所执行的所有SQL
究竟在一次Request中,Django对数据库执行了那些查询和操作呢?呵呵,Django早就为我们想好了这个问题,使用django.core.context_processors.debug模块即可。
在setting中设置:
TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.debug", #debug 一次请求调用到多少SQL语句",
)
并设置能看到次debug信息的请求IP:
INTERNAL_IPS = ('127.0.0.1',)
我们就可以在模板中设置一下,即可:
{% endblock %} {% if sql_queries %} <h3>SQL excute in this Request</h3> <!-- debug: show the sql excute in this request --> {% for query in sql_queries %}<h3>Excute times: {{query.time}}</h3> <p> <code> {{query.sql}} </code> </p> {% endfor %}<!-- debug ends here --> {% endif %}
以上只会在你设置了TEMPLATE_DEBUG = DEBUG,和请求IP在INTERNAL_IPS设置过,才会显示。
看看一个截图吧:
呵呵,看到了对Session的查询。
不错吧,这样我们可以对实际执行的SQL有底了。