【发布时间】:2014-09-08 04:48:51
【问题描述】:
如何检查 django 1.4.11 为该查询生成了哪个查询:
obj = Model.objects.get(code='code')
我试过了:
print Model.objects.get(code='code').query
但是模型对象有这样的方法。 如何获取原始 sql?
【问题讨论】:
标签: django django-orm
如何检查 django 1.4.11 为该查询生成了哪个查询:
obj = Model.objects.get(code='code')
我试过了:
print Model.objects.get(code='code').query
但是模型对象有这样的方法。 如何获取原始 sql?
【问题讨论】:
标签: django django-orm
它不起作用,因为query 是Queryset 对象的属性,当您执行.get() 查询集时,它会被评估(并成为模型的实例)
如果你尝试:
>>> type(Model.objects.get(code='code'))
<class 'app.models.Model'>
>>> print Model.objects.get(code='code').query
AttributeError: 'Model' object has no attribute 'query'
但改为:
>>> type(Model.objects.all())
<class 'django.db.models.query.QuerySet'>
>>> print Model.objects.all().query
SELECT "model.Model" from ...
现在,要获取所有查询的 SQL,您有多种选择:
如果DEBUG=True你可以使用这个:
from django.db import connection
print connection.queries
使用 django-debug-toolbar
【讨论】: