我如何检查 django 1.4.11 为此查询生成了哪个查询:
obj = Model.objects.get(code='code')
我已经尝试过:
print Model.objects.get(code='code').query
但是模型对象有这样的方法。 如何获取原始sql?
最佳答案
它不起作用,因为query
是Queryset
对象的一个属性,当您执行.get()
时,Queryset它已评估(并成为模型的实例)
如果你尝试:
>>> 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
- 使用内置的 django 日志记录 https://docs.djangoproject.com/en/dev/topics/logging/#django-db-backends您可以找到有关如何设置 here in SO 的示例.
关于django - 检查 Django 生成的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24801436/