我知道通过查看connection.queries,可以在启用DEBUG时获取为当前请求/响应运行的所有SQL查询。 django-debug-toolbar对开发也有很大帮助。
问题是我的生产服务器负载很高,我想记录每个视图正在执行的查询,这样我就可以优化首先创建更多查询的页面。
是否可以在不修改数据库驱动程序的情况下执行此操作?
答案 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
。
use_debug_cursor
,这是我目前在这台机器上安装的,所以我现在无法测试它。如果我有几分钟的时间,我会尝试让一个虚拟1.3项目开始测试这个......我可能会在这里过头!
use_debug_cursor
在Django 1.8中重命名为force_debug_cursor