首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL和Python:从一个线程提交对另一个线程不可见,但在MySQL工作台中可见

MySQL和Python:从一个线程提交对另一个线程不可见,但在MySQL工作台中可见
EN

Stack Overflow用户
提问于 2015-06-29 22:41:50
回答 1查看 349关注 0票数 0

我有两个Python线程访问同一个MySQL数据库,每个线程都有自己的连接和游标对象。一个线程将一条记录插入到表中。正如我所期望的那样,在MySQL工作台中,在写入线程执行commit之前,我不会看到表的长度增长,然后我看到了变化。问题是,我的另一个线程看不到变化:它看到的是表的旧状态,就好像提交从未发生过一样。当我重新启动应用程序时,表的长度确实得到了正确的读取,但无论写入线程追加和提交了多少条记录,表的长度都会一直保持不变。我觉得我遗漏了一些很明显的东西。

为了读取表的长度,我尝试过: select count(*) from mystupidtable count( id ) from mystupidtable和even: select id from mystupidtable

所有这些尝试都返回表的旧状态,就好像提交从未发生过一样。

EN

回答 1

Stack Overflow用户

发布于 2015-06-30 01:07:43

听起来第二个线程运行的是它隐式打开事务时的数据库快照。(我认为光标是这样做的。)如果是这样的话,在第二个线程上提交光标应该允许它看到新数据。

请参阅https://dev.mysql.com/doc/refman/5.0/en/innodb-consistent-read.html和可重复读取级别。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31118611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档