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