ORM的查询集对应的SQL查询

ORM的查询集对应的SQL查询

本文介绍了如何查看Django ORM的查询集对应的SQL查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法打印 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查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 10:35