”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何检查 Django 执行的 SQL 查询?

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

发布于2024-11-11
浏览:885

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 查询列表:

from django.db import connection
print(connection.queries)

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

print(MyModel.objects.filter(name="my name").query)

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

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

(摘自 Django bug 报告 #17741)

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

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

from django.db import reset_queries
from django.db import connection

reset_queries()
# 运行你的查询
print(connection.queries)
>>> []
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3