我正在尝试分析项目的大部分内容,仔细分析每行代码生成的查询。仔细分析需要在调试模式下运行服务器,这样我就可以逐个跨过这些行,并花时间研究查询。
到目前为止,我尝试了三种不成功的方法:
检查django.db.connection.queries
通过检查django.db.connection.queries
字典,您可以查看针对数据库生成和执行的查询。这个问题:
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']
}
}
}
这个问题是PyCharm。在调试时,PyCharm会评估所有涉及的变量,以便您可以查看和检查它们的值。这在大多数情况下都很方便,但它完全扭曲了我的分析,因为评估这些变量是针对数据库运行的查询,这些当然是被记录的。
调试工具栏
这个问题的主要和唯一问题是需要将行为包装在视图中。在视图执行完毕之前,查询日志不会显示,因此无法对其进行调试。