SQLAlchemy更新既不起作用也不引发错误

时间:2016-08-27 08:51:19

标签: python sqlalchemy flask-sqlalchemy

我想更新userid == 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'

1 个答案:

答案 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进行同步。

相关问题