我知道,在设置中,我可以debug = True
并记录所有SQL查询。
但是,我希望在返回响应之前记录一个特定视图所做的所有SQL查询。
如何在Django 1.3中执行此操作?
答案 0 :(得分:1)
这可以通过在特定视图的上下文中更改日志记录设置来完成。
您仍然需要启用DEBUG
:
出于性能原因,只有在settings.DEBUG设置为True时才启用SQL日志记录,无论安装的日志级别或处理程序如何。
...但您可以修改配置,以便仅记录特定视图的查询。
以下是如何做到的:
1:在settings.py
中将django SQL logger(django.db.backends
)级别设置为INFO
或更高级别,并验证它是否已停止记录SQL查询。
2.A。在您的视图中第一行有SQL日志记录,将该记录器级别设置为DEBUG
。最后一行,将其设置回原始值。这是最简单的方法,但是在视图代码之前/之后由中间件执行的查询不会被记录。
2.b中。编写自定义中间件以在视图处理之前和之后执行相同的操作。如果您将其放在第一位,则其他中间件所做的所有查询也将被记录。
请注意,此方法不是线程安全的,但由于您只想在开发环境中进行此设置,因此这无关紧要。
Django文档“Logging”章节: https://docs.djangoproject.com/en/1.4/topics/logging/
Python日志库参考: http://docs.python.org/library/logging.html