使用 Python 查询从 MySQL 检索动态数据
当从 Python 定期查询快速变化的 MySQL 数据库时,您可能期望基于循环的一致获取最新数据的方法。但是,您可能会遇到重复返回相同数据的情况。
此问题源于 MySQL 的默认隔离级别 REPEATABLE READ。在此级别下,事务内的读取将使用事务开始时存在的数据快照。同一事务中的后续查询将从该快照中读取而不是更新它。
要解决此问题,您需要在每次查询后提交连接,以确保下一个事务将检索最新数据。以下是修改 Python 代码的方法:
<code class="python"># Main loop while True: # SQL query sql = "SELECT * FROM table" # Read the database, store as a dictionary mycursor = mydb.cursor(dictionary=True) mycursor.execute(sql) # Store data in rows myresult = mycursor.fetchall() # Transfer data into list for row in myresult: myList[int(row["rowID"])] = (row["a"], row["b"], row["c"]) print(myList[int(row["rowID"])]) # Commit ! mydb.commit() print("---") sleep (0.1)</code>
通过在每个查询后添加 mydb.commit(),您可以强制 MySQL 提交事务并更新快照。这允许后续查询访问最新的数据。
以上是为什么 Python 循环中的后续查询会从 MySQL 数据库返回相同的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!