如何更新 SqlAlchemy 中的所有对象列?

ig-*_*nyk 4 python mysql sqlalchemy

我有一个用户表(超过 15 列),有时我需要完全更新所有用户属性。例如,我想替换

user_in_db = session.query(Users).filter_by(user_twitter_iduser.user_twitter_id).first() 与一些其他对象。

我找到了以下解决方案:

session.query(User).filter_by(id=123).update({"name": user.name})
Run Code Online (Sandbox Code Playgroud)

但我认为编写所有 15 个以上的属性很容易出错,应该存在一个更简单的解决方案。

Sim*_*ser 5

你可以写:

session.query(User).filter_by(id=123).update({column: getattr(user, column) for column in User.__table__.columns.keys()})
Run Code Online (Sandbox Code Playgroud)

这将迭代User模型(表)的列,并动态创建一个包含必要键和值的字典。

  • 您将如何防止它尝试更新 primary_key 列? (2认同)