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

Python 如何为SqlAlchemy中的所有行更新一列的数据?,python,mysql,flask,flask-sqlalchemy,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

对于单记录更新,我已经尝试了下面的代码,它正在工作

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()
但它不起作用


提前感谢:)

查询表以获取行,您可以在迭代列时更新列,并在完成后提交

for row in Uninstall.query.all():
    row.status = <new status>
db.session.commit()
卸载.query.all()中的行的
:
行。状态=
db.session.commit()

建议的参数未优化。您可以使用这些选项来更新: 1.

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

二,


对所有行仅调用一个
UPDATE
查询

您不需要向会话中添加
。它是通过会话加载的。抱歉@antonio_antuan它不工作:(…….bcz)它在数据库中存储空值……不是更新的值。值是什么没有区别。它编译到查询:
UPDATE uninstalls SET status=NEW_status
。您能给我看一下表或/和类的DDL吗?还是SQLA引发了一些异常?uid=request.json.get('uid')用于Uninstall.query中的行。all():#all()是extra row.status=uid db.session.commit()#您的代码不工作显示卸载模型定义。“uid”类卸载(db.model)中的值:id=db.Column(db.Integer,primary\u key=True)device\u id=db.Column(db.String(80))status=db.Column(db.String(80),default=“0”)类卸载模式(Schema):id=fields.Int(dump\u only=True)设备\u id=fields.Str()状态=fields.Str()
for row in Uninstall.query:  # all() is extra
    row.status = new_status
Session.commit()
Uninstall.query.update({Uninstall.status: new_status}) 
Session.commit()