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中文网其他相关文章!