如何解决Django-如何检查django是否正在针对某些查询击中数据库
我想优化django应用程序,为此我想知道如何检查查询是否命中数据库或从缓存版本中获取结果/返回值?
例如:
products = Products.objects.filter(product_name__icontains="natural")
if not products.exist():
return Response(...)
total_products = products.count()
first_product = product.first()
我喜欢在shell中执行此操作,并想检查哪一行命中数据库,哪一行刚刚从缓存版本返回结果,以便可以在视图中编写优化的查询。
我了解django-toolbar,但是我找不到它是否支持这样的功能(某些行匹配数据库或结果来自缓存版本)。
问候。
解决方法
以这种方式检查 connection.queries
的长度
from django.conf import settings
settings.DEBUG = True
from django.db import connection
print(len(connection.queries))
# do something with the database
products = Products.objects.filter(product_name__icontains="natural")
print(len(connection.queries))
# and execute the print statement again and again
total_products = products.count()
print(len(connection.queries))
first_product = product.first()
print(len(connection.queries))
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。