我试图分析我的项目的很大一部分,仔细分析每行代码生成的查询。仔细分析需要在调试模式下运行服务器,这样我就可以一行一行地检查这些查询,并花时间研究查询。
django.db.connection.queries
字典。问题在于:
-
需要积极检查。你不能把它当作一个监听器,在幕后记录这些查询。你需要打印出来
connection.queries
在每一行之后,这是一个麻烦。
-
显然,它只存储在您使用的同一个文件中生成的查询
. 如果你打电话后马上检查的话
some_method()
如果该方法是从其他地方导入的,则不会看到查询
some_method
生成。
我在设置文件中设置了以下日志记录配置,用于记录针对数据库运行的所有查询:
LOGGING = {
'version': 1,
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
}
},
'loggers': {
'django.db.backends': {
'level': 'DEBUG',
'handlers': ['console']
}
}
}
调试工具栏
主要的也是唯一的问题是行为需要包装在视图中。查询日志在视图执行完毕之前不会显示,因此无法进行调试。