flask_sqlalchemy中的db.session.update()與db.sesssion.merge()方法的區別,db.session.query(Model)與Model.query()的區別


調用merge()方法,此時實體狀態並沒有被持久化, 但是數據庫中的記錄被更新了. merge方法與update方法的差別在於針對同樣的操作update方法會報錯
session.merge()方法會首先發送一句select語句,去數據庫中獲取UserInfo持久化標識所對應的表記錄;然后自動生成一個持久化狀態的實體,與脫管狀態的實體做比較是否有所改變;一旦發生了改變,才會發送update語句執行更新。而按執行順序,若兩句session.merge()方法針對同一個脫管狀態的實體,那其結果只會執行最后一個session.merge()方法所發出的update語句。
 
db.session.commit()提交了數據到數據庫,但是沒有刷新模型映射中的數據,也就是model.query()中的數據。
而使用db.session.query()則是 從整個服務會話中進行查詢,而db.session.commit()提交的數據在這里是有刷新的
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM