2014-04-21 38 views
0

在SQLAlchemy文檔中它說:SQLAlchemy會在會話中更新對象的內容嗎?

「使用會話時,需要注意的是,與它關聯的對象是由會話持有的事務的代理對象 - 有各種事件這會導致對象重新訪問數據庫以保持同步,可以從Session中「分離」對象,並繼續使用它們,雖然這種做法有其警告。 - 當您想再次使用它們時,將分離的對象與另一個Session關聯起來,以便它們可以恢復表示數據庫狀態的正常任務。「 [http://docs.sqlalchemy.org/en/rel_0_9/orm/session.html]

如果我正在閱讀某些對象的會話中,在提交之前執行一些操作和更多查詢並保存一些對象,是否存在其他用戶對dbase所做更改的風險意外地更新我的對象,而我正在與他們一起工作?

換句話說,上面提到的「各種事件」是什麼?

是否將事務隔離級別設置爲最大值? (如果使用Flask-SQLAlchemy和Flask-Restful,如果有任何問題,我正在使用postureSQL。)

回答

1

不,SQLAlchemy不會監視數據庫的更改或更新對象,只要感覺如此。我可以想象這將是相當昂貴的操作。 「各種事件」更多地指SQLAlchemy的內部狀態。我不熟悉所有的「事件」,但是例如當對象被標記爲過期時,SQLAlchemy自動從數據庫中重新加載它們。其中一種情況是調用session.commit()並再次訪問任何對象的屬性。

更多這裏:Documentation about expiring objects