如何从管理shell界面查看我的django查询
我试过使用这个,但给了我通过django服务器的查询
from django.db import connection
connection.queries()
Run Code Online (Sandbox Code Playgroud)
我在某个地方见过它,不记得在哪里?
Django如何在manage shell中查看查询
有两种方法可以在shell中查看查询.首先,如果您使用的是查询集,则可以使用查询集的query
属性.例如
qs = MyModel.objects.all()
print qs.query
Run Code Online (Sandbox Code Playgroud)
第二,当查询不立即可见时.例如,当您使用时更新查询集时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
Run Code Online (Sandbox Code Playgroud)
我试过使用这个,但给了我通过django服务器的查询
我不明白你的意思是"给我通过Django服务器的查询".您是否在运行应用程序时尝试查看查询?在这种情况下,请使用django-debug-toolbar或@rubayeet引用的代码段.
最简单的方法是使用django 扩展。你可以安装它
$ pip install django-extensions
Run Code Online (Sandbox Code Playgroud)
启动你的外壳
./manage.py shell_plus --print-sql
Run Code Online (Sandbox Code Playgroud)
运行查询
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>]>
Run Code Online (Sandbox Code Playgroud)
如果你不想--print-sql
每次都追加,在你的 django 设置中,你可以设置
SHELL_PLUS_PRINT_SQL = True
Run Code Online (Sandbox Code Playgroud)
另一种方法是为数据库查询启用日志记录。
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',
}
},
}
Run Code Online (Sandbox Code Playgroud)
将此添加到您的设置并重新启动您的 shell 以查看 SQL 查询。
归档时间: |
|
查看次数: |
8904 次 |
最近记录: |