gpt4 book ai didi

python - Django 缓存查询(我不想这样)

转载 作者:行者123 更新时间:2023-11-28 16:32:17 24 4
gpt4 key购买 nike

所以我目前正在使用 Python/Django 工作,但我遇到了 Django 在“ session 内”缓存查询集的问题。

如果我运行 python manage.py shell 并这样做:

>>> from myproject.services.models import *
>>> test = TestModel.objects.filter(pk = 5)
>>> print test[0].name
>>> John

现在,如果我直接在 SQL 中将其更新为 Bob 并再次运行,它仍然会显示 John。但是,如果我按 CTRL+D 退出(退出)并运行相同的东西,它将更新并现在打印 Bob。

我的问题是我在屏幕上运行 SOAP 服务,它总是返回相同的结果,即使数据发生变化也是如此。

我需要一种方法来强制查询再次从数据库中实际提取数据,而不仅仅是提取缓存数据。我可以只使用原始查询,但对我来说这不是解决方案,有什么想法吗?

最佳答案

查询集未缓存“在 session 中”。

Django documentation: Caching and QuerySets提及:

Each QuerySet contains a cache to minimize database access. Understanding how it works will allow you to write the most efficient code.

In a newly created QuerySet, the cache is empty. The first time a QuerySet is evaluated – and, hence, a database query happens – Django saves the query results in the QuerySet’s cache and returns the results that have been explicitly requested (e.g., the next element, if the QuerySet is being iterated over). Subsequent evaluations of the QuerySet reuse the cached results.

Keep this caching behavior in mind, because it may bite you if you don’t use your QuerySets correctly.

(强调我的)

有关何时评估查询集的更多信息,请参阅 this link .

如果更新查询集对您的应用程序至关重要,则您必须每次都对其进行评估,无论是在单个 View 函数中还是使用 ajax。

这就像一次又一次地运行 SQL 查询。就像过去没有可用的查询集并且您将数据保存在必须刷新的某种结构中一样。

关于python - Django 缓存查询(我不想这样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com