给定一个简单的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.name
是sqlalchemy.orm.attributes.InstrumentedAttribute
,而User.__table__.c.name
是sqlalchemy.sql.schema.Column
我发现SqlAlchemy documentation使用第二种方法,但第一种方法也有效吗?