我想更新user
表id == 3
的{{1}}列。下面的代码不会更新任何行,甚至不会引发任何错误。问题出在哪里?
from sqlalchemy import update
@app.route('/testupdate/')
def testupdate():
stmt = update(user).where(user.id==3).values(email='a@b')
db.session.commit()
return 'done'
答案 0 :(得分:0)
问题是没有SQL被发送到数据库。
stmt = update(user).where(user.id==3).values(email='a@b')
实际上并不执行该语句,只是创建它。要实际执行它,您必须将其传递给
db.session.execute(stmt)
然后提交。您也可以使用会话的Query
API:
db.session.query(user).\
filter_by(id=3).\
update({user.email: 'a@b'},
synchronize_session='evaluate')
请注意,根据您是否在会话中拥有受影响的实例并稍后将使用它们,您可以选择不与False
进行同步。