如何使用 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()))
以下是我尝试过的所有不同方法:
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()))