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

Ran*_*ndy 7 django django-orm

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

Protocols.objects.filter(active=False)
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*ski 13

请参阅Django FAQ:如何查看Django正在运行的原始SQL查询?:

>>> from django.db import connection    
>>> connection.queries = []
>>> Protocols.objects.filter(active=False)
>>> print connection.queries
Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 8

是的,它可以.您需要确保
设置文件中的DEBUG = True

你可以看到已经执行了什么SQL查询...

>>> from django.db import connection
>>> connection.queries
Run Code Online (Sandbox Code Playgroud)

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

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

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

它在此处记录 http://docs.djangoproject.com/en/dev/faq/models/