sqlalchemy無法更新數據庫數據

寫在前面

最近在使用python的sqlalchemy結合flask框架寫網頁demo的時候,發現對於數據庫的增刪查操作可以正常進行,但是在進行數據庫記錄的修改操作的時候,卻出現了問題。

問題描述 & 報錯記錄

from application import db
#根據id查詢出一條記錄然後修改其view_counter值 進行加1設置
info_d = Movie.query.filter_by(id=id).first()
info_d.view_counter += 1
db.session.add(info_d)
db.session.commit()
#報錯
#sqlalchemy.exc.InvalidRequestError: 
#Object '<Movie at 0x106112b50>' is already attached to session '1' (this is '2')

從報錯中我們可以看到<Movie at 0x106112b50>‘已經連接到會話’1’(這裏是’2’)
說明我們將sqlalchemy的一個model在另一個地方使用了

解決方法

當設計db.session操作的時候,函數內進行 from models import db,即要用哪個db就從哪個model中導入。不能直接導入最原始的db

from model.Movie import db
#根據id查詢出一條記錄然後修改其view_counter值 進行加1設置
info_d = Movie.query.filter_by(id=id).first()
info_d.view_counter += 1
db.session.add(info_d)
db.session.commit()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章