【发布时间】:2011-10-24 21:53:49
【问题描述】:
设置:
- Python 脚本 A 每 15 分钟向数据库插入一次数据
- Python 脚本 B 每隔几分钟从数据库中查询一些最新条目
两者都使用 Django 的 ORM,在同一台机器上运行并使用本地 MySQL 数据库。
问题:
B 获取条目,除了最新的条目,尽管 A 保存了 分钟 之前。
我怀疑 A 没有关闭事务,因此 B 看到没有最后一个条目的数据库。事实上,在检查 MySQL 日志时,我注意到每个 INSERT 的 commit 发生在 下一个 INSERT 之前。
即使它应该是多余的,我也将@commit_on_success 装饰器添加到包含save() 的A 函数中,但它没有帮助。
如何强制 Django(或 MySQL?!)在 save() 之后立即提交?
更新:
我发现提交 DO 发生了——我被误导相信它们不会发生,因为MySQL's General Query Log only has 1 sec resolution。
鉴于此信息和其他新信息,我重新提出了here 的问题。
【问题讨论】:
标签: mysql django transactions commit