小编典典

SQLAlchemy:使用声明式更新的更好方法?

python

我是SQLAlchemy新手。

假设我在声明模式下有一个用户表:

class User(Base):
    __tablename__ = 'user'
    id = Column(u'id', Integer(), primary_key=True)
    name = Column(u'name', String(50))

当我知道没有将对象加载到会话中的用户ID时,我会像这样更新该用户:

ex = update(User.__table__).where(User.id==123).values(name=u"Bob Marley")
Session.execute(ex)

我不喜欢使用User.__table__,我应该不再为此担心吗?

有一个更好的方法吗?

谢谢!


阅读 195

收藏
2021-01-20

共1个答案

小编典典

在ORM级别上也有一些更新功能。它还不能处理任何棘手的情况,但是对于单行更新(或批量更新)的普通情况,它可以正常工作。它甚至会遍历所有已加载的对象,并将更新应用于它们。您可以像这样使用它:

session.query(User).filter_by(id=123).update({"name": u"Bob Marley"})
2021-01-20