我正在使用SQLAlchemy,在一个事务中,我想做以下操作:
Cars.color == red)。Cars.type == Honda)。现在,假设我的数据库只是一个表,其中包含3列(name、color和type),其中name作为主键。
如果我的数据库已经有red类型的cars,并且类型为Honda,名为Bob。我不能就这么说
Cars.query.filter(Cars.name == red).delete()
// add all Hondas
db.session.commit()因为// add all Hondas将失败,因为我可能会添加name作为Bob和彩色red的汽车。我如何进行删除,并将删除作为一个操作的一部分?
参考资料:我正在使用MySQL。
发布于 2016-05-24 08:20:10
你可以试试这个:
db.session.query(Cars).filter(Cars.name == red).delete()
// add all Hondas
for h in Hondas:
db.session.add(h)
db.session.commit()发布于 2015-12-09 07:26:56
注意-我不认为您当前的代码正确地设置了事务。除此之外,我认为您描述的问题并不存在-- session.commit()刷新序列中的更改,因此无论是否调用session.flush(),您都应该能够在标记的点插入Hondas --在插入到DB之前,红色的car将被删除。
https://stackoverflow.com/questions/34169599
复制相似问题