我正在探索https://github.com/shymonk/django-datatable,它看起来不错,但我想知道它是否会查询整个数据或查询分页数据。此信息非常需要用于确定性能。
我想知道Django,有没有办法看看正在执行的底层查询是什么?
我使用Django == 1.11.7
答案 0 :(得分:0)
如果要查看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()
答案 1 :(得分:0)
查看已执行的所有查询的另一种方法。
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>
这也允许您查看已执行了多少查询