如何使用 sqlalchemy 更新 mysql table 中的列?

how to update a column in a mysql table using sqlachemy?

以下是我尝试过的所有不同方法:

1

query = db.session.query(Table1)
query = query.filter(Table1.id == '12345')
record = query.one()
record.trackingId = 'UPSTXNID1'
db.session.flush()

2

sqlalchemy.update(Table1)\
    .values({Table1.trackingId: 'UPSTXNID1'})\
    .where(Table1.id == '12345)

3

session.query(Table1)\
        .filter(Table1.id == '12345')\
        .update({Table1.trackingId: 'UPSTXNID1'})
session.commit()

4

db.engine.execute(
   "UPDATE Table1 SET trackingId=:trackingId WHERE id=:id",
   {'id': '12345', 'trackingId': 'UPSTXNID1'}
)

它们都不会抛出任何错误,但 trackingId 列不会更新值。

第二个的一个小变体在我调用 execute 后起作用。

stmt = sqlalchemy.update(Table1).\
            values(trackingId = 'UPSTXNID1').\
            where(Table1.id == '12345')
db.engine.execute(stmt)

# If you want to see the underlying SQL statement that is created
print str(stmt.compile(dialect=sqlalchemy.dialects.mysql.dialect()))