好吧,我在csv文件中有一个要插入数据库的数据。现在我无法保证提供的数据将根据我的需要,所以我想如果有任何异常,那么DB上的先前事务应该是撤消。
我目前所做的是保存数据直到找到异常。我抛出异常然后在行号处打印异常。我想要的是应该再次插入整个文件而不会有任何重复的行。我该怎么办?
这是我的代码: -
for row in rows:
line += 1
try :
obj = XYZ(col1 = row[0],col2=row[1])
obj.save()
except : raise ("Excetion found at line ", line)
如何撤消在出现异常之前完成的所有先前交易?
答案 0 :(得分:2)
听起来像atomic()
,引用文档(强调我的):
Atomicity是数据库事务的定义属性。原子 允许我们创建一个代码块,其中包含原子性 数据库有保证。 如果代码块成功 完成后,更改将提交到数据库。如果有的话 例外情况,这些更改将被回滚。