如何更新SqlAlchemy中所有行的一列数据?

时间:2016-07-07 10:01:31

标签: python mysql flask flask-sqlalchemy

对于单个记录更新,我尝试了以下代码并且它正在运行。

uid=1

info = Info.query.filter_by(id=uid).first()
info.sold_status ='1'
db.session.add(info)
db.session.commit()

现在我想为多行更新一列。 我试过了:

for row in db.session.query(Uninstall.status).all():
     print row.status

abc=row.status
abc=uid

db.session.add(row.status)
db.session.commit()

但它不起作用。

提前致谢:)

2 个答案:

答案 0 :(得分:15)

建议未优化。您可以使用选项进行更新: 1.

for row in Uninstall.query:  # all() is extra
    row.status = new_status
Session.commit()

如果有很多行,它可以更快,但它会为每一行调用UPDATE。不好,是吗?

2

Uninstall.query.update({Uninstall.status: new_status}) 
Session.commit()

仅为所有行调用一个UPDATE查询。

答案 1 :(得分:-2)

for row in Uninstall.query.all():
    print row.status
    row.status = <new status>
    db.session.add(row)
    db.session.commit()