SQLAlChemy在同一事务中删除和插入

2022-03-10 00:00:00 python sqlalchemy flask-sqlalchemy mysql

我正在使用SQLAlChemy,并且在一个事务中,我想要执行以下操作:

  1. 删除符合特定条件(假设为Cars.color == red)的所有记录。
  2. 现在,我想插入符合特定条件(例如Cars.type == Honda)的所有汽车。

现在假设我的数据库只是一个包含3列(namecolortype)的表,name作为主键。

如果我的数据库已经有redHonda类型的汽车,名称为Bob。我不能就这么说

Cars.query.filter(Cars.name == red).delete()
// add all Hondas
db.session.commit()

as// add all Hondas将失败,因为我可能会使用nameasBob和颜色red添加一辆汽车。如何执行删除操作并将删除操作作为一项操作的一部分?

参考:我正在使用MySQL。


解决方案

您可以尝试此操作:

db.session.query(Cars).filter(Cars.name == red).delete()
 // add all Hondas
for h in Hondas:
    db.session.add(h)
db.session.commit()

相关文章