如何在 Django 中记录所有 sql 查询?

新手上路,请多包涵

如何记录我的 django 应用程序执行的所有 SQL 查询?

我想记录所有内容,包括来自管理站点的 SQL。我看到了 这个问题一个常见问题解答,但我仍然不知道应该放在哪里

from django.db import connection
connection.queries

将所有内容记录到一个文件中?

所以我的问题是 - 我应该怎么做才能有一个记录所有 SQL 语句的文件(比如 all-sql.log)?

原文由 Oleg Pavliv 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 938
2 个回答

也许看看 https://github.com/django-debug-toolbar/django-debug-toolbar

它会让您查看给定页面生成的所有查询。以及它们发生位置的堆栈跟踪等。

编辑:将所有 SQL 查询记录到文件等,然后您将需要创建一些中间件。中间件在每个请求上运行。对于这类事情,有几个 Django 片段:

那些关心打印到终端,但不难使它们适应使用 python 的日志库。

原文由 John Montgomery 发布,翻译遵循 CC BY-SA 3.0 许可协议

你只需要:

 @override_settings(DEBUG=True)

如果您已经在 runserver 中打印了 SQL 调试语句。

将装饰器添加到您的 class TestA(TestCase)test_function

 @override_settings(DEBUG=True)
class TestA(TestCase):
...

    @override_settings(DEBUG=True)
    def test_function(self):
    ...

感谢@Janusz Skonieczny 的回答!

原文由 Vedant Agarwala 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题