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

為什麼我的 Python MySQL 查詢不斷回傳相同的資料?

發佈於2024-11-19
瀏覽:818

Why Does My Python MySQL Query Keep Returning the Same Data?

從 Python 查詢 MySQL 產生相同的資料

從 Python 重複查詢 MySQL 資料庫以檢索動態資料帶來了挑戰。眾所周知,僅在循環中迭代查詢不足以從資料庫中獲取新資料。

您提供的程式碼舉例說明了此問題:

for i in range(listSize):
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...

即使嘗試使用 fetchall、fetchmany 和 fetchone,結果仍然停滯不前。

解決方案:提交連線

要解決此問題,每個查詢執行後都必須提交連線。此操作結束正在進行的事務並啟動一個新事務,使後續查詢能夠偵測上一個事務期間所做的變更。

while True:
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...
    mydb.commit()
    #...

隔離等級和可重複讀取預設值

這個概念植根於隔離等級。預設情況下,MySQL 對 InnoDB 使用 REPEATABLE READ。這意味著在事務內,後續讀取將保留由事務初始讀取建立的快照。因此,如果不提交,後續查詢將不會捕獲任何更改。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3