您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何禁用Django查询缓存?

如何禁用Django查询缓存?

我遇到了我认为是某种缓存的行为,但事实证明是数据库事务愚弄了我。

我遇到的问题是,在另一个过程中,将项目添加数据库中,并且我想监视另一个过程的进度,因此我打开了django shell,并发出了以下命令:

>>> MyData.objects.count()
74674

>>> MyData.objects.count()
74674

即使实际上在数据库中,该值也没有改变。我意识到,至少以我在事务中设置MysqL和django的方式,我在打开事务时只会看到数据库的“快照”。

由于在django中使用视图,因此我定义了自动提交行为,因此对于每个视图来说,只查看快照是可以的,因为下次调用视图时,它将处于不同的事务中。但是对于一段不是自动提交的代码,除了在该事务中所做的那些更改之外,它将看不到数据库中的任何更改。

只是想我会把这个答案扔给可能遇到这种情况的任何人。

解决,请提交你的事务,可以像这样手动完成:

>> from django.db import transaction
>> transaction.enter_transaction_management()
>> transaction.commit() # Whenever you want to see new data
Go 2022/1/1 18:22:03 有321人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶