commit() 和 flush() 实现的功能都一样,为什么两个要写两种,有什么特殊的区别呢?
commit()
flush()
认证高级PHP讲师
誰說這兩個東西的功能一樣了? 在SQLAlchemy中一個Session(可以看作)是一個transaction,每個操作(基本上)對應一條或多條SQL語句,這些SQL語句需要發送到資料庫伺服器才能被真正執行,而整個transaction需要commit才能真正生效,如果沒提交,一旦你的程式掛了,所有未提交的事務都會被回滾到事務開始之前的狀態。 flush就是把客戶端尚未傳送到資料庫伺服器的SQL語句寄過去,commit就是告訴資料庫伺服器提交交易。 簡單說,flush之後你才能在這個Session中看到效果,而commit之後你才能從其它Session中看到效果。
功能不一樣。 簡單說: flush預先提交,等於提交到資料庫內存,還未寫入資料庫檔案; commit就是把記憶體裡面的東西直接寫入,可以提供查詢了;
誰說這兩個東西的功能一樣了?
在SQLAlchemy中一個Session(可以看作)是一個transaction,每個操作(基本上)對應一條或多條SQL語句,這些SQL語句需要發送到資料庫伺服器才能被真正執行,而整個transaction需要commit才能真正生效,如果沒提交,一旦你的程式掛了,所有未提交的事務都會被回滾到事務開始之前的狀態。
flush就是把客戶端尚未傳送到資料庫伺服器的SQL語句寄過去,commit就是告訴資料庫伺服器提交交易。
簡單說,flush之後你才能在這個Session中看到效果,而commit之後你才能從其它Session中看到效果。
功能不一樣。
簡單說:
flush預先提交,等於提交到資料庫內存,還未寫入資料庫檔案;
commit就是把記憶體裡面的東西直接寫入,可以提供查詢了;