You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django ORM查询优化:调试模式下如何获取真实查询执行数量

Django调试模式下强制执行全量查询的解决方案
  • 全局临时禁用缓存(最快捷方案)
    直接在settings.py中加入调试模式专属的缓存配置,使用DummyCache缓存后端,该后端仅实现缓存接口、不会实际存储任何缓存数据,所有查询都会真实执行:
# settings.py
DEBUG = True # 保持你原有的DEBUG判断逻辑即可

if DEBUG:
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
        }
    }

修改后重启Django服务即可生效,无需改动业务代码。

  • 针对特定视图/逻辑局部禁用缓存
    如果不需要全局关闭缓存,仅需要测试特定接口的真实查询量,可以使用Django内置的缓存禁用上下文管理器,包裹需要测试的业务逻辑即可:
from django.core.cache import cache
from django.shortcuts import render
from .models import YourModel

def test_view(request):
    # 进入上下文后所有缓存操作都会失效
    with cache.disable():
        # 你的业务查询逻辑
        data = YourModel.objects.filter(status=1).all()
        # 其他业务处理逻辑
    return render(request, 'test.html', {'data': data})
  • 单次测试手动清空缓存
    如果仅需要偶尔测试几次,不想修改任何代码,可以在每次刷新页面前执行清空缓存的命令:
    python manage.py shell -c "from django.core.cache import cache; cache.clear()"

注意:以上所有方案仅适用于本地调试/开发环境,严禁在生产环境使用,会导致服务性能严重下降。
如果配置DummyCache后查询数依然存在差异,可排查是否存在带随机条件的查询、第三方中间件动态生成查询、异步任务修改数据等非缓存因素。

内容的提问来源于stack exchange,提问作者Edgar Navasardyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:54:02