Django - 如何检查 django 是否针对特定查询访问数据库

JD *_*nki 1 python django django-queryset django-debug-toolbar django-rest-framework

我想优化 django 应用程序,为此我想知道如何检查我的查询是否正在访问数据库,或者我是否从缓存版本中获取结果/返回值?

例如:

products = Products.objects.filter(product_name__icontains="natural")

if not products.exist():
    return Response(...)

total_products = products.count()
first_product = product.first()
Run Code Online (Sandbox Code Playgroud)

我喜欢在 shell 中执行它,并想检查哪一行访问了数据库,哪一行只从缓存版本返回结果,以便我可以在我的视图中编写优化的查询。

我知道 django-toolbar 但我找不到它是否支持这样的东西(某些行命中数据库或结果是否来自缓存版本)。

问候。

JPG*_*JPG 6

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))
Run Code Online (Sandbox Code Playgroud)

参考:

  1. 在 Django shell 会话期间获取 SQL 查询计数