」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼 Python 循環中的後續查詢會從 MySQL 資料庫傳回相同的資料?

為什麼 Python 循環中的後續查詢會從 MySQL 資料庫傳回相同的資料?

發佈於2024-11-10
瀏覽:579

Why Do Subsequent Queries in a Python Loop Return the Same Data from a MySQL Database?

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