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

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

Susan Sarandon
Susan Sarandon原創
2024-11-06 07:56:03890瀏覽

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

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn