從 Python 查詢 MySQL 產生相同的資料
從 Python 重複查詢 MySQL 資料庫以檢索動態資料構成了挑戰。眾所周知,僅在循環中迭代查詢不足以從資料庫中獲取新資料。
您提供的程式碼說明了這個問題:
<code class="python">for i in range(listSize): #... mycursor = mydb.cursor(dictionary=True) mycursor.execute(sql) #...</code>
即使嘗試使用 fetchall 、 fetchmany 和 fetchone,結果仍然停滯不前。
解決方案:提交連線
要解決此問題,每個查詢執行後都必須提交聯絡。此操作結束正在進行的事務並啟動一個新事務,使後續查詢能夠偵測上一個事務期間所做的變更。
<code class="python">while True: #... mycursor = mydb.cursor(dictionary=True) mycursor.execute(sql) #... mydb.commit() #...</code>
隔離等級和可重複讀取預設值
這個概念植根於隔離等級。預設情況下,MySQL 對 InnoDB 使用 REPEATABLE READ。這意味著在事務內,後續讀取將保留由事務初始讀取建立的快照。因此,如果不提交,後續查詢將不會捕獲任何更改。
以上是為什麼我的 Python MySQL 查詢不斷回傳相同的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!