从 Python 查询 MySQL 产生相同的数据
从 Python 重复查询 MySQL 数据库以检索动态数据构成了挑战。众所周知,仅在循环中迭代查询不足以从数据库中获取新数据。
您提供的代码说明了此问题:
<code class="python">for i in range(listSize): #... mycursor = mydb.cursor(dictionary=True) mycursor.execute(sql) #...</code>
即使尝试使用 fetchall 、 fetchmany 和 fetchone,结果仍然停滞不前。
解决方案:提交连接
要解决此问题,每个查询执行后都必须提交联系。此操作结束正在进行的事务并启动一个新事务,使后续查询能够检测上一个事务期间所做的更改。
<code class="python">while True: #... mycursor = mydb.cursor(dictionary=True) mycursor.execute(sql) #... mydb.commit() #...</code>
隔离级别和可重复读取默认值
这个概念植根于隔离级别。默认情况下,MySQL 对 InnoDB 使用 REPEATABLE READ。这意味着在事务内,后续读取将保留由事务初始读取建立的快照。因此,如果不提交,后续查询将不会捕获任何更改。
以上是为什么我的 Python MySQL 查询不断返回相同的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!