Django,有没有办法看到正在执行的SQL查询?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django,有没有办法看到正在执行的SQL查询?相关的知识,希望对你有一定的参考价值。
我正在探索https://github.com/shymonk/django-datatable,它看起来不错,但我想知道它是否会查询整个数据或查询分页数据。确定性能非常需要此信息。
我想知道在Django中,有没有办法看到正在执行的底层查询是什么?
我使用Django == 1.11.7
答案
如果要查看Django的ORM生成的实际SQL,可以打印出查询集的.query
属性。这是一个名为home
的应用程序和我在Django shell中生成的名为Question
的模型的示例:
$ python manage.py shell
(InteractiveConsole)
>>> from home.models import Question
>>> q = Question.objects.all()
>>> print(q.query)
SELECT "home_question"."id", "home_question"."date_added", "home_question"."question", "home_question"."number_of_answers" FROM "home_question"
看看django-datatable
的方法,看起来过滤和分页视图基于过滤get_queryset
的结果,返回model.objects.all()
:
def get_queryset(self):
model = TableDataMap.get_model(self.token)
if model is None:
return None
return model.objects.all()
另一答案
查看已执行的所有查询的另一种方法。
python manage.py shell
>> from django.db import connection
>> from app.models import SomeModel
>> obj = SomeModel.objects.first()
>> connection.queries
>> <Returns a list of all the queries that have been executed in the session upto this point>
这也允许您查看已执行的查询数
以上是关于Django,有没有办法看到正在执行的SQL查询?的主要内容,如果未能解决你的问题,请参考以下文章
在 Django shell 会话期间获取 SQL 查询计数
从 Django 创建 SQL 插入脚本以填充 PostgreSQL 数据库
有没有办法测量 SQL 查询执行所需的时间而不用 Java 获取结果?