首頁 > 資料庫 > mysql教程 > 為什麼我在資料庫中更改 SQLAlchemy 資料後沒有更新?

為什麼我在資料庫中更改 SQLAlchemy 資料後沒有更新?

Barbara Streisand
發布: 2024-11-28 20:40:12
原創
314 人瀏覽過

Why Doesn't My SQLAlchemy Data Update After I Change it in the Database?

克服SQLAlchemy 中的ORM 資料快取

利用SQLAlchemy 進行資料管理時,使用者可能會遇到一個明顯的快取問題,其中檢索的資料保持不變,儘管直接對資料庫進行更新。這可能是一個令人費解的兩難。

揭曉緩存:了解事務隔離

所經歷的行為不是由於 SQLAlchemy 中的明確緩存,而是一個基本特徵事務隔離。預設情況下,SQLAlchemy 以事務模式運作。資料修改僅在呼叫 session.commit() 時寫入資料庫。

但是,事務隔離引入了一個扭曲。雖然其他活動事務無法立即存取修改後的數據,但即使在提交或回滾自己的事務之後,它們也可能無法看到它。這種現象稱為可重複讀取,可確保交易維持其已載入的狀態,即使實際資料已變更。

禁用感知緩存

而不是真正的緩存,可以透過使用連接池來減輕事務隔離的影響。透過確保所有連接都源自公共池,您可以避免跨不同連接的資料快取並提高更新的可見性。若要啟用連線池,請將 pool_recycle 參數設為非零值。

例如:

engine = create_engine('mysql://user:password@host/db', pool_recycle=3600)
登入後複製

在此實例中,連線將每 3600 秒回收一次,防止資料快取問題與交易隔離相關。

以上是為什麼我在資料庫中更改 SQLAlchemy 資料後沒有更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板