從 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