使用DEBUG设置为False记录Django SQL查询

时间:2011-08-24 19:59:53

标签: sql django optimization django-orm

我知道通过查看connection.queries,可以在启用DEBUG时获取为当前请求/响应运行的所有SQL查询。 django-debug-toolbar对开发也有很大帮助。

问题是我的生产服务器负载很高,我想记录每个视图正在执行的查询,这样我就可以优化首先创建更多查询的页面。

是否可以在不修改数据库驱动程序的情况下执行此操作?

1 个答案:

答案 0 :(得分:4)

在Django 1.3中,我看到BaseDatabaseWrapper中的课程django/db/backends/__init__.py有一个属性use_debug_cursor。此类是表示默认数据库连接(docs)的django.db.connection对象的包装器。似乎将此属性设置为true会导致Django使用来自CursorDebugWrapper的{​​{1}},它会记录它执行的所有查询,而不记录django/db/backends/util.py,而不会记录CursorWrapper

Django 1.2中没有

use_debug_cursor,这是我目前在这台机器上安装的,所以我现在无法测试它。如果我有几分钟的时间,我会尝试让一个虚拟1.3项目开始测试这个......我可能会在这里过头!

use_debug_cursor在Django 1.8中重命名为force_debug_cursor