我知道通过查看connection.queries,可以获取在DEBUG开启时为当前请求/响应运行的所有SQL查询。 django-debug-toolbar也有助于发展。将DEBUG设置为False的日志记录Django SQL查询
问题是我的生产服务器负载很重,我想记录正在为每个视图执行的查询,以便我可以优化首先创建更多查询的页面。
是否有可能做到这一点,而无需修改我的数据库驱动程序?
我知道通过查看connection.queries,可以获取在DEBUG开启时为当前请求/响应运行的所有SQL查询。 django-debug-toolbar也有助于发展。将DEBUG设置为False的日志记录Django SQL查询
问题是我的生产服务器负载很重,我想记录正在为每个视图执行的查询,以便我可以优化首先创建更多查询的页面。
是否有可能做到这一点,而无需修改我的数据库驱动程序?
在Django 1.3中,我看到类BaseDatabaseWrapper
在django/db/backends/__init__.py
有一个属性use_debug_cursor
。此类是代表默认数据库连接的django.db.connection
对象的包装(docs)。似乎将此属性设置为true将导致Django使用来自django/db/backends/util.py
的CursorDebugWrapper
,它会记录它执行的所有查询,而不是CursorWrapper
,而不是CursorWrapper
。
use_debug_cursor
没有出现在Django 1.2中,这是我现在安装在这台机器上的,所以我现在无法测试它。如果我有几分钟的时间,我会试着让一个虚拟的1.3项目开始测试这个......我可能会在这里头痛!
use_debug_cursor
在Django中更名为force_debug_cursor
1.8