首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLAlchemy删除并插入同一事务

问SQLAlchemy删除并插入同一事务
EN

Stack Overflow用户
提问于 2015-12-09 02:08:21
回答 2查看 3.6K关注 0票数 2

我正在使用SQLAlchemy,在一个事务中,我想做以下操作:

  1. 删除所有符合特定条件的记录(比如这是Cars.color == red)。
  2. 现在,我想插入所有符合特定标准的汽车(比如Cars.type == Honda)。

现在,假设我的数据库只是一个表,其中包含3列(name、color和type),其中name作为主键。

如果我的数据库已经有red类型的cars,并且类型为Honda,名为Bob。我不能就这么说

代码语言:javascript
复制
Cars.query.filter(Cars.name == red).delete()
// add all Hondas
db.session.commit()

因为// add all Hondas将失败,因为我可能会添加name作为Bob和彩色red的汽车。我如何进行删除,并将删除作为一个操作的一部分?

参考资料:我正在使用MySQL。

EN

回答 2

Stack Overflow用户

发布于 2016-05-24 08:20:10

你可以试试这个:

代码语言:javascript
复制
db.session.query(Cars).filter(Cars.name == red).delete()
 // add all Hondas
for h in Hondas:
    db.session.add(h)
db.session.commit()
票数 3
EN

Stack Overflow用户

发布于 2015-12-09 07:26:56

注意-我不认为您当前的代码正确地设置了事务。除此之外,我认为您描述的问题并不存在-- session.commit()刷新序列中的更改,因此无论是否调用session.flush(),您都应该能够在标记的点插入Hondas --在插入到DB之前,红色的car将被删除。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34169599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档