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设置过,才会显示。
看看一个截图吧:
image 
呵呵,看到了对Session的查询。
不错吧,这样我们可以对实际执行的SQL有底了。
Technorati 标签: ,,,,,
posted @ 2008-04-18 21:38 MK2 阅读(152) 评论(4)  编辑 收藏 所属分类: E Django, Python

  回复  引用  查看    
#1楼 2008-04-19 19:43 | Q.Lee.lulu      
Good!!
最近很勤奋
  回复  引用  查看    
#2楼 [楼主]2008-04-19 20:08 | MK2      
能不勤奋吗?哈哈
  回复  引用    
#3楼 2008-04-21 13:18 | jinhao7773 [未注册用户]
非常感谢,以前看文档的时候竟然没注意有这么有用的一条。建议可以把这写代码加在base.html中,那样调试起来就爽了。
  回复  引用  查看    
#4楼 [楼主]2008-04-21 13:43 | MK2      
@jinhao7773
呵呵,是啊,是放在基页Template里的

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: