我正在使用SQLAlchemy并且在一个事务中,我想执行以下操作:
Cars.color == red
)。Cars.type == Honda
)。现在假设我的数据库只是一个包含3列(name
,color
和type
)且name
为主键的表格。
如果我的数据库已经有red
且类型为Honda
且名称为Bob
的汽车。我不能只说
Cars.query.filter(Cars.name == red).delete()
// add all Hondas
db.session.commit()
因// add all Hondas
失败,因为我可能会添加name
Bob
且颜色为red
的汽车。作为一个操作的一部分,我如何进行删除并删除?
参考:我正在使用MySQL。
答案 0 :(得分:1)
你可以试试这个:
db.session.query(Cars).filter(Cars.name == red).delete()
// add all Hondas
for h in Hondas:
db.session.add(h)
db.session.commit()
答案 1 :(得分:0)
警告lector - 我不认为您当前的代码确实正确设置了事务。除此之外,我不相信你描述的问题存在 - session.commit()刷新序列中的变化,所以无论是否调用session.flush(),你都应该能够在你的位置插入Hondas标记 - 在插入数据库之前,红色汽车将被删除。