现在有一批数据,比如 前几条数据格式都正确,中间某条或者几条格式不完整,并且就是在这几条有问题的数据处在 commit 的时候报错了 Internal Error ( cymysql.err.InternalError ) except 捕获并且执行 rollback 不成功, 导致部分数据提交数据库,错误数据以及其下面的的数据没提交。
期望是要么全提交要么全失败,如何实现?
期望是要么全提交要么全失败,如何实现?
1
kuzicala OP 代码
try: db.session.add_all(self.tasks) db.session.commit() except Exception as e: db.session.rollback() raise e |
2
xulolololololo Dec 14, 2019 via Android
你开个事物不就好了
|
3
CallMeReznov Dec 14, 2019
事物
|
4
jamry Dec 14, 2019 via iPhone
事务
|
5
kuzicala OP @xulolololololo flask -SQLAlchemy 默认事务不都是开启的吗? commit 时候才提交?
|
6
kuzicala OP @CallMeReznov flask -SQLAlchemy 默认事务不都是开启的吗? commit 时候才提交?
|
8
kuzicala OP try:
db.session.add(Order("a1")) db.session.add(Order("a2")) db.session.add(Order("a2")) db.session.commit() except Exception as e: db.session.rollback() raise e 参数具有唯一性要求,所以第三条肯定失败, 但是 第一第二条却成功了? 难道这三条操作不在同一个事务里面吗? |