使用Python 查詢從MySQL 檢索動態資料
從PythonSQL 定期查詢快速變化的MySQLSQL 資料庫時,您可能會預期基於循環的一致獲取最新數據的方法。但是,您可能會遇到重複返回相同資料的情況。
此問題源自於 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中文網其他相關文章!