如何撤消Django DB中的最后一笔交易

时间:2014-05-27 07:25:31

标签: python database django django-models

好吧,我在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)

如何撤消在出现异常之前完成的所有先前交易?

1 个答案:

答案 0 :(得分:2)

听起来像atomic(),引用文档(强调我的):

  

Atomicity是数据库事务的定义属性。原子   允许我们创建一个代码块,其中包含原子性   数据库有保证。 如果代码块成功   完成后,更改将提交到数据库。如果有的话   例外情况,这些更改将被回滚。