有没有办法在执行查询时显示 Django 正在运行的 SQL?
原文由 spence91 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有办法在执行查询时显示 Django 正在运行的 SQL?
原文由 spence91 发布,翻译遵循 CC BY-SA 4.0 许可协议
from django.db import reset_queries, connection
class ShowSQL(object):
def __enter__(self):
reset_queries()
return self
def __exit__(self, *args):
for sql in connection.queries:
print('Time: %s\nSQL: %s' % (sql['time'], sql['sql']))
然后你可以使用:
with ShowSQL() as t:
some queries <select>|<annotate>|<update> or other
它打印
原文由 Igor Kremin 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
请参阅文档常见问题解答:“ 我如何查看 Django 正在运行的原始 SQL 查询? ”
django.db.connection.queries
包含 SQL 查询列表:查询集还有一个
query
包含要执行的查询的属性:请注意,查询的输出不是有效的 SQL,因为:
来自 Django 错误报告 #17741 。
因此,您不应将查询输出直接发送到数据库。
如果您需要重置查询,例如查看在给定时间段内运行了多少查询,您可以使用
reset_queries
来自django.db
: