Django的ORM可以输出它正在使用的SQL查询吗?

时间:2011-01-21 18:47:26

标签: django django-orm

我知道你可以输出SQL来查看创建的表。 Django是否可以输出用于任何查询的sql,如:

Protocols.objects.filter(active=False)

?我在文档中找不到这个,所以希望有人可以指出它们,如果事实上Django可以做到这一点。

3 个答案:

答案 0 :(得分:12)

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

>>> from django.db import connection    
>>> connection.queries = []
>>> Protocols.objects.filter(active=False)
>>> print connection.queries

答案 1 :(得分:8)

是的,它可以。你需要确保这一点     DEBUG =真
在您的设置文件中

您可以看到...已经执行了哪些SQL查询

>>> from django.db import connection
>>> connection.queries

您显然需要执行一些查询才能在此处查看。

要查看为执行特定QuerySet而执行的内容,您可以执行以下操作

STR(MyModel.objects.filter(myvar__gte = 15).query)

这里有记录 http://docs.djangoproject.com/en/dev/faq/models/

答案 2 :(得分:3)

我发现Django debug toolbar非常宝贵。还有.as_sql()用于事物的代码显示(请参阅this SO post以获得与其相符的注释)