从 Python 查询 MySQL 产生相同的数据
从 Python 重复查询 MySQL 数据库以检索动态数据带来了挑战。众所周知,仅在循环中迭代查询不足以从数据库中获取新数据。
您提供的代码举例说明了此问题:
for i in range(listSize):
#...
mycursor = mydb.cursor(dictionary=True)
mycursor.execute(sql)
#...
即使尝试使用 fetchall、fetchmany 和 fetchone,结果仍然停滞不前。
解决方案:提交连接
要解决此问题,每个查询执行后都必须提交连接。此操作结束正在进行的事务并启动一个新事务,使后续查询能够检测上一个事务期间所做的更改。
while True:
#...
mycursor = mydb.cursor(dictionary=True)
mycursor.execute(sql)
#...
mydb.commit()
#...
隔离级别和可重复读取默认值
这个概念植根于隔离级别。默认情况下,MySQL 对 InnoDB 使用 REPEATABLE READ。这意味着在事务内,后续读取将保留由事务初始读取建立的快照。因此,如果不提交,后续查询将不会捕获任何更改。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3