python - SQLAlchemy 中的使用 flush() 和 commit() 有什么区别
PHP中文网
PHP中文网 2017-04-17 13:40:32
0
2
870

commit()flush() 实现的功能都一样,为什么两个要写两种,有什么特殊的区别呢?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(2)
伊谢尔伦

誰說這兩個東西的功能一樣了?
在SQLAlchemy中一個Session(可以看作)是一個transaction,每個操作(基本上)對應一條或多條SQL語句,這些SQL語句需要發送到資料庫伺服器才能被真正執行,而整個transaction需要commit才能真正生效,如果沒提交,一旦你的程式掛了,所有未提交的事務都會被回滾到事務開始之前的狀態。
flush就是把客戶端尚未傳送到資料庫伺服器的SQL語句寄過去,commit就是告訴資料庫伺服器提交交易。
簡單說,flush之後你才能在這個Session中看到效果,而commit之後你才能從其它Session中看到效果。

洪涛

功能不一樣。
簡單說:
flush預先提交,等於提交到資料庫內存,還未寫入資料庫檔案;
commit就是把記憶體裡面的東西直接寫入,可以提供查詢了;

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板