禁用“记住每个 SQL 查询”(Django)

Posted

技术标签:

【中文标题】禁用“记住每个 SQL 查询”(Django)【英文标题】:Disable "remember every SQL query" (Django) 【发布时间】:2019-08-06 16:32:17 【问题描述】:

我知道:

同样重要的是要记住,当打开 DEBUG 运行时,Django 会记住它执行的每个 SQL 查询。这在您调试时很有用,但它会迅速消耗生产服务器上的内存。

来源:https://docs.djangoproject.com/en/dev/ref/settings/#debug

我有一个可以进行压力测试的 python 脚本。

此脚本使用 django 测试运行程序。

它在循环中使用 ORM,在每次迭代中产生越来越多的流量。

如果我的脚本可以在任何环境中运行,那就太好了。

我不希望其他开发人员在执行此脚本之前强制修改他们的设置(将 DEBUG 配置为 False)。

有没有办法禁用“记住每个 SQL 查询”的特定功能?

【问题讨论】:

How do you set DEBUG to True when running a Django test?的可能重复 这里详情test-runner-options @BearBrown 此脚本使用 django 测试运行程序。 【参考方案1】:

您可以尝试猴子修补 BaseDatabaseWrapper 以将 queries_limit 设置为零。否则,您可以让脚本验证 debug 是否设置为 False,如果他们尝试在 debug 设置为 True 的情况下使用它,则显示一条消息,通知他们使用 DEBUG=False python manage.py script 运行它。

【讨论】:

以上是关于禁用“记住每个 SQL 查询”(Django)的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中禁用会话创建

Django学习之禁用csrf和使用csrf操作详解

Django/Django Rest 框架 - 禁用 CSRF

带有初始数据的 Django 禁用字段引发验证错误 [重复]

如何在 Django 中禁用自动创建 ID?

Django 禁用斜杠