【发布时间】:2018-11-16 03:45:47
【问题描述】:
我正在优化我的大部分代码,因此我试图将数据库命中率降至最低,并尝试在大但很少的查询中抓取所有必要的数据并将其缓存。
但是我还没有找到一种有效的方法来查看 Django 是否真的在对数据库运行查询,或者它是否正在返回缓存或预取的数据。
理想情况下,我想逐行调试代码的相关部分,并且每个原始 SQL 查询都应在执行时显示。 本质上是某种侦听器,它会在运行后立即记录每个运行的查询。
This 检查文档建议的正在运行的查询的方法不够好,因为它显然只显示在您访问 connection.queries 的同一文件中形成的查询。
访问QuerySet.query 也不好,因为它需要一个QuerySet 对象。在其他情况下,对数据库运行查询但返回类型不是QuerySet。
我也不确定Django Debug Toolbar 是否会起作用,因为我不希望我的行为包含在视图中,我想执行一个独立的脚本并彻底调试它。
【问题讨论】:
-
你试过 django log stackoverflow.com/a/20161527/8060120
-
@BearBrown 似乎符合我的要求。有什么方法可以在代码中启用或禁用这些日志记录选项,以便我可以将其缩小到我想要调试的部分?此外,我尝试设置一个格式化程序以不同的方式着色,但它始终为红色,无论我的目标是调试级别、信息、警告、错误还是严重。
-
不幸的是我从来没有使用它只是阅读你的问题和答案
标签: python django django-1.8