web-dev-qa-db-ja.com

SqlAlchemyのすべての行の1つの列のデータを更新するにはどうすればよいですか?

単一レコードの更新については、次のコードを試しましたが、機能しています。

uid=1

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

ここで、1つの列を複数の行に更新したいと思います。私が試してみました:

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()

しかし、それは機能していません。

前もって感謝します :)

8

提案は最適化されていません。オプションを使用して更新できます:1。

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

行がたくさんある場合は高速になる可能性がありますが、すべての行に対してUPDATEが呼び出されます。良くないですよね?

2.2。

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

すべての行に対して1つのUPDATEクエリのみを呼び出します。

17
antonio_antuan