使用pymysql进行定时查询数据不更新的原因及解决方式

时间:2022-03-27 02:29:15

用python写了一个小脚本定时查询数据库,输出查询结果并写入文件,发现每次查询的结果都是相同的,但是数据库确实在更新数据。

原因:  

REPEATABLE READ
The default isolation level for InnoDB. It prevents any rows that are queried from being
changed by other transactions, thus blocking non-repeatable reads but not phantom reads.
It uses a moderately strict locking strategy so that all queries within a transaction see
data from the same snapshot, that is, the data as it was at the time the transaction started.

重复读

innodb的默认隔离级别。它防止查询的任何行

由其他事务更改,因此阻止不可重复的读取,但不阻止幻象读取。

它使用适度严格的锁定策略,以便事务中的所有查询都可以看到

来自同一快照的数据,即事务启动时的数据。

既然知道了原因是查询事务未更新导致的 那就解决一下呗:

  每次查询后更新一下事务,在execute(sql) 之后 进行 commit()操作