【发布时间】:2011-06-13 08:26:31
【问题描述】:
我知道您可以输出 SQL 来查看创建的表。 Django 是否可以输出用于任何查询的 sql,例如:
Protocols.objects.filter(active=False)
?我在文档中找不到这个,所以希望有人可以将它们指向我,如果事实上 Django 可以做到这一点。
【问题讨论】:
标签: django django-orm
我知道您可以输出 SQL 来查看创建的表。 Django 是否可以输出用于任何查询的 sql,例如:
Protocols.objects.filter(active=False)
?我在文档中找不到这个,所以希望有人可以将它们指向我,如果事实上 Django 可以做到这一点。
【问题讨论】:
标签: django django-orm
查看 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
【讨论】:
是的,它可以。你需要确保你的设置文件中有DEBUG=True
您可以看到...执行了哪些 sql 查询
>>> from django.db import connection
>>> connection.queries
您显然需要执行一些查询才能在此处看到它们。
要查看交付特定 QuerySet 执行了什么操作,您可以执行以下操作
str(MyModel.objects.filter(myvar__gte=15).query)
【讨论】:
我发现Django debug toolbar 非常宝贵。还有 .as_sql() 用于在代码中显示事物(请参阅 this SO post 以获取一个很好的注释)
【讨论】: