问题描述
有没有办法打印 Django ORM 生成的查询?
Is there a way I can print the query the Django ORM is generating?
假设我执行以下语句:Model.objects.filter(name='test')
如何查看生成的 SQL 查询?
How do I get to see the generated SQL query?
推荐答案
每个 QuerySet 对象都有一个 query
属性,您可以将其记录或打印到 stdout 以进行调试.
Each QuerySet object has a query
attribute that you can log or print to stdout for debugging purposes.
qs = Model.objects.filter(name='test')
print(qs.query)
请注意,在 pdb 中,使用 p qs.query
不会按预期工作,但 print(qs.query)
会.
Note that in pdb, using p qs.query
will not work as desired, but print(qs.query)
will.
如果这不起作用,对于旧的 Django 版本,请尝试:
If that doesn't work, for old Django versions, try:
print str(qs.query)
编辑
我还使用了自定义模板标签(如此代码段中所述)来注入单个请求范围内的查询作为 HTML 注释.
I've also used custom template tags (as outlined in this snippet) to inject the queries in the scope of a single request as HTML comments.
这篇关于如何查看Django ORM的查询集对应的SQL查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!