如何通过python dict更新sqlalchemy orm对象

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (327)

dict的关键名称映射到sqlalchemy对象attrs

例如:

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    fullname = Column(String)
    password = Column(String)

可以从id = 3 {name: "diana"}或id = 15更新,{name: "marchel", fullname: "richie marchel"}

提问于
用户回答回答于

您可以使用setattr()动态更新现有SQLAlchemy对象的属性:

user = session.query(User).get(someid)

for key, value in yourdict.iteritems():
    setattr(user, key, value)
用户回答回答于

根据您的用例(如果您不需要验证或推断模型中的任何内容),您可以使用filter_by id来获取特定行来保存一个数据库调用,并使用您最初想要的字典更新它。

user_query = session.query(User).filter_by(id=someid)
data_to_update = dict(name="marchel", fullname="richie marchel")

user_query.update(data_to_update)

您可能还需要用synchronize_session=Falseupdate调用中添加关键字参数,具体取决于会话类型(如果使用scoped_session):

user_query.update(data_to_update, synchronize_session=False)

扫码关注云+社区

领取腾讯云代金券