有没有办法显示Django在执行查询时正在运行的SQL?

推荐答案

参见文档常见问题解答:"How can I see the raw SQL queries Django is running?"

django.db.connection.queries包含SQL查询的列表:

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

QuerySet还有一个query attribute,其中包含要执行的查询:

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

请注意,查询的输出不是有效的SQL,因为:

Django从不实际插入参数:它将查询和参数分别发送到数据库适配器,后者执行适当的操作

来自Django bug report #17741.

因此,不应将查询输出直接发送到数据库.

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

from django.db import reset_queries

reset_queries()
print(connection.queries)
>>> []

Sql相关问答推荐

Select 最大值,但当并列时,从其他列 Select 最大值

查询多个表并返回合并在联合列上的所有表中的所有行

从以前的非空值行中获取值

在SQL中使用类别值将行转置为列

Django将字符串筛选为整数?

对多个条件的SQL进行排名

在Postgres中合并相似的表

在SQL GROUP BY中的某些行之后执行计算

如何在Postgres中为单值输入多行?

删除所有订单中可用的重复值

存储过程太慢

在特定条件下使用 LAG,确定要采用什么 LAG 值?

如何使用 Google BigQuery 中的条件根据特定列值连接列的 N 行?

将空 JSON 数组添加到 SQL Server 表列中的 JSON 字符串

SQL 将 Varchar 转换为日期

如何使用SQL将患者平均分配给他们所在地区的doctor

PostgreSQL分割字符串为子词并判断其是否存在于其他字符串中

如何显示最常引用条目的详细信息

Postgresql 需要一个查询,为我提供所有没有具有特定状态值的子元素的父母

按 15 分钟递增计数分组,包括 0 计数