Django ORM“获取”翻译为 SQL

hus*_*ngs 2 django django-models

对于Django中的查询集,我们可以调用其方法.query来获取原始sql。

例如,

queryset = AModel.objects.all()
print queryset.query
Run Code Online (Sandbox Code Playgroud)

输出可能是: SELECT "id", ... FROM "amodel"

但是对于通过“get”检索对象,例如,

item = AModel.objects.get(id = 100)
Run Code Online (Sandbox Code Playgroud)

如何获得等效的原始sql?注意:该项目可能为“无”。

okm*_*okm 5

等于item = AModel.objects.get(id = 100)

items = AModel.objects.filter(id = 100)
if len(items) == 1:
    return items[0]
else:
    raise exception
Run Code Online (Sandbox Code Playgroud)

因此执行的查询等于AModel.objects.filter(id = 100)

另外,您还可以查看最新的项目connection.queries

from django.db import connection # use connections for non-default dbs
print connection.queries[-1]
Run Code Online (Sandbox Code Playgroud)

并且,正如 FoxMaSk 所说,django-debug-toolbar在浏览器中安装并享受它。