Django - 如何检查 Django 是否正在为特定查询访问数据库
Django - How to check if django is hitting database for certain query
我想优化 Django 应用程序,为此我想知道如何检查我的查询是否正在访问数据库,或者我是否从缓存版本中获取 result/return 值?
例如:
products = Products.objects.filter(product_name__icontains="natural")
if not products.exist():
return Response(...)
total_products = products.count()
first_product = product.first()
我喜欢在 shell 中执行此操作,并想检查哪一行命中数据库以及哪一行 return 来自缓存版本,以便我可以在我的视图中编写优化查询。
我知道 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))
参考:
- Get SQL query count during a Django shell session
我想优化 Django 应用程序,为此我想知道如何检查我的查询是否正在访问数据库,或者我是否从缓存版本中获取 result/return 值?
例如:
products = Products.objects.filter(product_name__icontains="natural")
if not products.exist():
return Response(...)
total_products = products.count()
first_product = product.first()
我喜欢在 shell 中执行此操作,并想检查哪一行命中数据库以及哪一行 return 来自缓存版本,以便我可以在我的视图中编写优化查询。
我知道 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))
参考:
- Get SQL query count during a Django shell session