使用 SQLAlchemy 時,在 MySQL 資料庫中插入和更新資料時可能會出現快取問題。 SQLAlchemy 檢索到的舊資料和更新資料之間的差異表明存在緩存,可以停用快取來解決此問題。
潛在問題
通常被誤認為是緩存,這種行為源自於SQLAlchemy中事務隔離的概念。預設情況下,其會話以事務模式運行,保存資料更改,直到調用 session.commit() 為止。其他並發事務在此期間不會感知到這些變化。
事務隔離扭曲
但是,事務隔離引入了額外的一層。這些並發事務不僅會錯過未提交的數據,而且可能會繼續顯示過時的信息,直到各自的事務被提交或回滾。
可重複讀取
中對於具有平均隔離等級的事務,載入狀態在事務內持續存在。這意味著儘管底層資料庫發生了修改,但仍傳回相同的未更改數據,這種現象稱為可重複讀取。
解決方案
要修正此問題並確保準確的資料檢索,請考慮解決方案如下:
以上是為什麼 SQLAlchemy 似乎會快取數據,以及如何解決此 MySQL 問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!