如何查找django是否命中数据库



据我所知,django查询集是惰性的,在求值之前不会命中db,在这种情况下,将查询集分配给dict中的键后,以下几行会导致每次都命中db吗?请告知

abc = model1.objects.all()
content = {
'entry' : abc, # Once assigned will the below lines hits db?
'entry_count' : abc.count(), # will this hit db
'entry1_count' : abc.filter(name__icontains = 'a').count(), # will this hit db
'entry2_count' : abc.filter(name__icontains = 'b').count(), # will this hit db again?
}
return render(request, template, content}

在除第一种情况外的所有情况下,它都会命中数据库。

理论部分见文件:https://docs.djangoproject.com/en/2.2/topics/db/queries/

您可以使用django调试工具栏来查看每个呈现页面的所有SQL查询

您还可以看到哪个查询正在以编程方式执行。例如:

abc.count()

您可以通过以下操作查看SQL查询:

print(abc.count().explain())

相关内容

  • 没有找到相关文章

最新更新