Django ORM“获得”到SQL的翻译
对于Django中的Queryset,我们可以调用它的方法.query来获得原始的sql。
例如,
queryset = AModel.objects.all()
print queryset.query
输出可能是:SELECT“id”,... FROM“amodel”
但是,通过“获取”来检索对象,比如说,
item = AModel.objects.get(id = 100)
如何获得相当于原始的sql? 注意:该项目可能是None。
item = AModel.objects.get(id = 100)
等于
items = AModel.objects.filter(id = 100)
if len(items) == 1:
return items[0]
else:
raise exception
因此执行的查询等于AModel.objects.filter(id = 100)
另外,您可以检查connection.queries
的最新项目
from django.db import connection # use connections for non-default dbs
print connection.queries[-1]
而且,正如FoxMaSk所说,安装django-debug-toolbar
并在浏览器中享受它。
它是一样的SQL,只是在WHERE id=100
子句结尾。
然而,FWIW,如果一个filter
足够具体,只返回一个结果,它就和get
产生的SQL一样,唯一的区别就是在Python那边,例如
AModel.objects.get(id=100)
是相同的:
AModel.objects.filter(id=100).get()
因此,您可以简单地查询AModel.objects.filter(id=100)
,然后使用queryset.query
。
如果仅仅是为了调试目的,你可以使用可以通过安装的“django调试栏”
pip install django-debug-toolbar
链接地址: http://www.djcxy.com/p/38703.html