我怎么能看到我的Django的查询管理从shell界面Django中如何查看查询在管理外壳
我一直在使用这种尝试,但让我穿过Django的服务器
from django.db import connection
connection.queries()
我查询已经看到它的某个地方,不记得在哪里?
我怎么能看到我的Django的查询管理从shell界面Django中如何查看查询在管理外壳
我一直在使用这种尝试,但让我穿过Django的服务器
from django.db import connection
connection.queries()
我查询已经看到它的某个地方,不记得在哪里?
Django的我如何查看查询管理外壳
有两种方法在外壳查看查询。首先,如果您使用查询集,则可以使用查询集的query
属性。对于例如
qs = MyModel.objects.all()
print qs.query
其次当查询不可见时立即。对于例如当您使用update()
更新查询集时。在这种情况下,您可以:
from django.db import connection
MyModel.objects.all().update(foo = 'bar')
print connection.queries
# print connection.queries[-1] # if you want to see only the last query
我一直在使用这种尝试,但让我穿过Django的服务器
我不明白你的意思是“给我查询的查询通过Django服务器“。您是否在运行应用程序时试图查看查询?在这种情况下,请使用@rubayeet所指的django-debug-toolbar或snippet。
好的,我正在做的是将查询集分配给一个变量,例如cur = Entry.objects.all()。但现在好了。谢谢 – gath 2010-10-07 08:52:57
我使用this Django code snippet列出了渲染模板中视图中的所有查询。非常有用。
最简单的方法是使用django extensions。你可以用
$ pip install django-extensions
安装
与
./manage.py shell_plus --print-sql
运行开始你的shell查询
In [1]: Book.objects.all()
Out[1]: SELECT "book_book"."id", "book_book"."name", "book_book"."author_id" FROM "book_book" LIMIT 21
Execution time: 0.087548s [Database: default]
<QuerySet [<Book: The Stranger>, <Book: Atlas Shrugged>]>
如果你不想每次都追加--print-sql
,在你的Django设置,你可以设置
SHELL_PLUS_PRINT_SQL = True
另一种方法是启用数据库查询的日志记录。
LOGGING = {
'version': 1,
'loggers': {
'django.db.backends': {
'level': 'DEBUG',
'handlers': ['console'],
}
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'filters': ['require_debug_true'],
}
},
'filters': {
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
}
},
}
添加到您的设置并重新启动您的外壳看到SQL查询。
[Django:show/log来自python shell的ORM sql调用]的可能重复(http:// stackoverflow。com/questions/2314920/django-show-log-orm-sql-calls-from-python-shell) – tyrion 2013-12-04 12:58:53