Cla*_*man 7 python django orm django-models
我在SQL数据库上有一个django模型TestModel.
每当我这样做
TestModel.objects.all()
Run Code Online (Sandbox Code Playgroud)
如果我从同一个进程多次运行它,我似乎得到相同的结果.我通过手动删除(不使用任何django原语)测试构建模型的表中的一行,查询仍然返回相同的结果,即使显然删除后应该有更少的对象.
有没有某种缓存机制,每次我想检索对象时django都没有进入数据库?
如果有,有没有办法我仍然可以强制django在每个查询上转到数据库,最好不要编写原始SQL查询?
我还应该指定通过重新启动进程,模型再次返回正确的对象,我不再看到已删除的对象,但如果我再删除一些问题,则会再次出现问题.
这是因为您的数据库隔离级别是可重复读。在 django shell 中,所有请求都包含在单个事务中。
已编辑
你可以在你的 shell 中尝试:
from django.db import transaction
with transaction.autocommit():
t = TestModel.objects.all()
...
Run Code Online (Sandbox Code Playgroud)