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

用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()操作

  

  

原文地址:https://www.cnblogs.com/wangbaojun/p/11505540.html

时间: 2024-10-10 10:41:02

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

Android intent 传值不更新的原因和解决办法

当 Activity 的启动模式是 singleTask 或者 singleInstance 的时候.如果使用了 intent 传值,则可能出现 intent 的值无法更新的问题.也就是说每次 intent 接收到的值都是第一次接到的值.因为 intent 没有被更新.想要更新需要做两件事情. 1. 发送方 Activity,加上一句话 ? 1 PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,Pen

mongo大数据量更新服务端超时解决: Cursor not found, cursor id: 82792803897

默认 mongo server维护连接的时间窗口是十分钟 默认 单次从 server获取数据是101条或者 大于1M小于16M的数据 所以默认情况下,如果10分钟内未能处理完数据,则抛出该异常. 解决办法: 1. 修改每批次获取数据量的条数,即batch size: collection.find(condition).batch_size(5) 批量数需 估算十分钟内能处理的数据量 2. 延长超时时间 需显示的关闭cursor db.getCollection("unicom_jd"

百度快照迟迟不更新的原因及解决方法

最近梦瑶的济南网站建设遇到了快照回档的现象,每天都及时的更新了,网站也没有出什么问题,但是百度快照就是不更新,这让我心里有些担忧.遇到网站的百度快照更新不及时,相信许多seoer都遇到过这样的情况,这真的是一件让人抓狂的事情.那到底是什么原因导致的呢?有什么好的解决方法吗?下面是济南网站建设梦瑶花了不少时间问高手,查资料为大家分析的出现快照停滞的原因,并谈一下几种可行的解决方法. 一.原因分析 出现快照停滞的原因,济南网站建设梦瑶总结大体有以下几方面的原因: 第一:服务器不稳定.服务器动辄就出现

hive命令查询数据不显示表头解决办法

在hive命令行中查询数据如下: 表头未显示出来 解决办法: 修改hive安装包conf/hive-site.xml配置文件: <property> <name>hive.cli.print.header</name> <value>true</value> <description>Whether to print the names of the columns in query output.</description&g

基于py3和pymysql的数据库查询,查询某几列的数据

#python3 #xiaodeng #基于py3和pymysql的数据库查询,查询某几列的数据 import pymysql conn=pymysql.connect(....) cur=conn.cursor() cur.execute("select name,age from nlist") data=cur.fethall() for name,age in data: print name,age conn.close() cur.close()

Oracle编辑数据时提示:这些查询结果不可更新,请使用ROWI或者SELECT……FOR UPDATE获得可更新结果

我们在对Oracle数据库进行操作时,有时会在查询完结果后想要对其中的某些数据进行操作,当我们点击编辑(一个锁标志)是,会提示我们上述问题中的错误:这些查询结果不可更新,请使用ROWI或者SELECT--FOR UPDATE获得可更新结果.按照错误提示的信息我们可以采用两种解决办法: 解决办法1:在查询语句后面写上for update,如:select * from 表名 for update: 解决办法2:在查询的列中使用rowid属性,如:select rowID, 表名.* from 表名

如何实现MySQL随机查询数据与MySQL随机更新数据?

以下的文章主要介绍的是MySQL随机选取数据,对实现MySQ随机查询数据与MySQ随机更新数据的实际操作步骤的描述,以及对其实际操作中所要用到的语句的描述,以下就是对其具体操作步骤的描述. MySQL随机查询数据 以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩.他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了. SELECT * FROM table_name ORDER BY rand() LIMIT 5; MySQ

jpa缓存导致无法查询到更新后的数据&amp;android出现ANR的一个解决办法

1. 向服务器更新记录后查询,始终查询不到更新后的信息 只能查到更新之前的,马上推断出是缓存的问题.网上搜索一番,将问题定位为jpa缓存,我们要设置jpa查询时不从缓存中取,直接从数据库中取,这样便能保证查询到的结果是最新的,但是性能可能会有所影响.参考资料:https://en.wikibooks.org/wiki/Java_Persistence/Caching#JPA_2.0_Cache_APIs 如上图提示,我在restful服务器做了如下设置后便可以了. 2. 安卓app注册界面出新了

利用带关联子查询Update语句更新数据

Update是T-sql中再简单不过的语句了,update table set column=expression  [where condition],我们都会用到.但update的用法不仅于此,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果. 假定有表Table1(a,b,c)和Table2(a,c),现在Table1中有些记录字段c为null,要根据字段a在Table2中查找,取出字段a相等的字段c的值来更新Table1.一种常规的思路,通过游标遍历Table1中字段c