繁体   English   中英

Django模型不能实时将数据持久存储到数据库

[英]Django model isn't persisting data to DB on real-time

我正在使用Django Python框架和MySQL DBMS。

在下面的屏幕截图中,我正在使用SurveyDraft.objects.create()创建new_survey_draft对象,如下所示,假设它应在Surveydraft DB表中创建一个新行,但也如屏幕截图所示,并在调试完代码中, new_survey_draft对象是使用id = pk = 270创建的,而右侧另一个窗口中显示的数据库表没有id = 270的新行。

即使在对象实例化后调用的publish_survey_draft()中设置断点时,我也调用了SurveyDraft.objects.get(pk = 270)来返回对象,但在数据库表中仍然没有id = 270

最后,在恢复代码并从所有定义返回后,该行已成功添加到id = 270的数据库表中。

我想知道所看到的背后发生了什么,Django是否有可能将数据存储在对象中而没有实时持久存储到DB,而仅将数据全部持久存储在以后的执行点上?

我已经坚持了几个小时,在网上找不到任何有用的信息,因此,我非常感谢您提供有关此问题的任何建议。

在此处输入图片说明

深挖这个问题后,我才发现,有一个叫那是我Django项目由作为解释数据库字典下设置ATOMIC_REQUESTS为True settings.py启用原子请求概念在这里

它是这样的。 在调用视图函数之前,Django启动事务。 如果产生的响应没有问题,则Django提交事务。 如果视图产生异常,Django将回滚事务。

这就是为什么在使用断点调试我的代码时,更改未保留在数据库中的原因,因为更改仅在返回成功响应后才会提交给DB。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM