我有一个带有db字段的类
id = db.Column(db.BigInteger, primary_key=True)
uuid = db.Column(
UUID(as_uuid=True), unique=True, nullable=True, default=uuid.uuid4
)
name = db.Column(db.String(50), nullable=False)然后,我想按“uuid”字段进行大容量更新,而不是默认情况下的id:
updates = []
for upd in body['new_data']:
update = {
'uuid': upd['uuid'],
'name': upd['name'],
}
updates.append(update)
db.session.bulk_update_mappings(MyClass, updates)但我有一个错误,没有匹配。如何通过“uuid”字段进行批量更新?
发布于 2019-09-14 17:05:17
根据官方的SQLAlchemy文档,这是不可能的。
所有存在且不属于主键的键都应用于UPDATE语句的SET子句;所需的主键值应用于WHERE子句。
如果您想要另一种选择,请尝试使用on_conflict_do_update(),它的工作方式类似于一个插入,您可以指定哪个列应该是where子句。
这里是详细解释其工作原理的文档。
https://stackoverflow.com/questions/57856846
复制相似问题