使用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