解决pymysql查不到最新数据的办法

项目场景:

python3.6,windows,mysql

问题描述:

在本地远程连接mysql数据库,用的是pymysql,我本地创建了两个连接,分别是pymysql的,另一个是用Popen创建的命令行的客户端,我先创建的pymysql的客户端进行查询,然后利用Popen的客户端进行插入数据,然后在用之前创建的pymysql的客户端进行数据的查询,然后我发现,查询到的结果为空,但是我手动查询能查得到,以为sql写错了,拿程序运行的sql去查询,发现并没有问题,然后我怀疑是因为客户端的问题,然后我在查询时,重新创建了一个客户端,发现就能查询到数据了,这很奇怪,难道mysql的事务还能这样,我抱着怀疑的态度查询了一下资料

原因分析:

MySQL默认事务隔离级别是 REPEATABLE READ,当我在本地 Popen中利用SQL插入用户数据 后,Pymysql连接端的事务A不会读取到Pepen连接端更新的事务B,即便事务B已提交,而事务A每次查询到的数据都是最开始创建事务查询到结果的快照,事务A一直没进行更新。

更详细的解释说明,可参考文末列出的网上资料


解决方案:

1:修改MySQL的事务隔离级别
2:每次查询操作后,都进行 commit() 提交事务。
3:Python创建pymysql连接时,设置 autocommit=True ,即让其操作后自动提交事务(**推荐使用**)。

参考资料:

http://t.zoukankan.com/wintest-p-12825371.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值