首页 >后端开发 >Python教程 >如何检查 Django 执行的 SQL 查询?

如何检查 Django 执行的 SQL 查询?

Barbara Streisand
Barbara Streisand原创
2024-11-02 16:59:03822浏览

How Can I Inspect the SQL Queries Executed by Django?

How to Inspect SQL Queries in Django

想知道 Django 在执行查询时运行的 SQL 语句吗?答案很简单:

1. 从文档中查找解答
Django 文档的 FAQ 部分提供了直接的解答:

2. 访问数据库连接
可以通过 django.db.connection.queries 访问 SQL 查询列表:

<code class="python">from django.db import connection
print(connection.queries)</code>

3. 查看 Queryset 对象
Queryset 对象具有一个 query 属性,其中包含要执行的查询:

<code class="python">print(MyModel.objects.filter(name="my name").query)</code>

注意:输出的查询不是有效的 SQL。原因是:

“Django 从不实际插值参数:它将查询和参数分别发送给数据库适配器,由适配器执行适当的操作。”

(摘自 Django bug 报告 #17741)

因此,请勿将查询输出直接发送到数据库。

重置查询
如果你需要重置查询,比如查看给定时间段内运行的查询数量,可以使用 django.db.reset_queries:

<code class="python">from django.db import reset_queries
from django.db import connection

reset_queries()
# 运行你的查询
print(connection.queries)
>>> []</code>

以上是如何检查 Django 执行的 SQL 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn