我正在优化我的代码的一部分,因此我试图将对数据库的访问尽量减少,并尝试在大而少的查询中获取所有必要的数据并进行缓存。
然而,我还没有找到一种有效的方法来查看Django是否实际上正在针对数据库运行查询,或者它是否返回了缓存或预取数据。
理想情况下,我想逐行调试我的代码的相关部分,并显示每个原始SQL查询,就像它们被执行的那样。基本上是一种记录每个查询的侦听器,即在运行时立即记录每个查询。
文档建议的用于检查运行查询的这种方式不够好,因为它只显示在访问connection.queries的同一文件中形成的查询。
访问QuerySet.query也不行,因为它需要一个QuerySet对象。还有其他情况,其中针对数据库运行查询,但返回类型不是QuerySet。
然而,我还没有找到一种有效的方法来查看Django是否实际上正在针对数据库运行查询,或者它是否返回了缓存或预取数据。
理想情况下,我想逐行调试我的代码的相关部分,并显示每个原始SQL查询,就像它们被执行的那样。基本上是一种记录每个查询的侦听器,即在运行时立即记录每个查询。
文档建议的用于检查运行查询的这种方式不够好,因为它只显示在访问connection.queries的同一文件中形成的查询。
访问QuerySet.query也不行,因为它需要一个QuerySet对象。还有其他情况,其中针对数据库运行查询,但返回类型不是QuerySet。
我不确定Django Debug Toolbar是否适用,因为我不想将我的行为包装在视图中,我想执行一个独立的脚本并进行彻底的调试。