使用 Python 查询从 MySQL 检索动态数据
当从 Python 定期查询快速变化的 MySQL 数据库时,您可能期望基于循环的一致获取最新数据的方法。但是,您可能会遇到重复返回相同数据的情况。
这个问题源于MySQL的默认隔离级别REPEATABLE READ。在此级别下,事务内的读取将使用事务开始时存在的数据快照。同一事务中的后续查询将从该快照中读取而不是更新它。
要解决此问题,您需要在每次查询后提交连接,以确保下一个事务将检索最新数据。以下是修改 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)
通过在每个查询后添加 mydb.commit(),您可以强制 MySQL 提交事务并更新快照。这允许后续查询访问最新数据。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3