InstrumentedAttribute vs SqlAlchemy中update()子句中的列

时间:2018-01-04 01:10:48

标签: python sqlalchemy

给定一个简单的ORM,

class User(Base):
    __tablename__ = 'users'

    id = sql.Column(sql.Integer, primary_key=True)
    name = sql.Column(sql.String)

以下两种方法更新行有什么区别?

方法1

connection.execute(
    User.__table__.update()
    .where(User.name='Alice')
    .values(name='Bob')
)

方法2

connection.execute(
    User.__table__.update()
    .where(User.__table__.c.name='Alice')  # <-- Difference
    .values(name='Bob')
)

User.namesqlalchemy.orm.attributes.InstrumentedAttribute,而User.__table__.c.namesqlalchemy.sql.schema.Column

我发现SqlAlchemy documentation使用第二种方法,但第一种方法也有效吗?

0 个答案:

没有答案