Python 如何撤消Django数据库中的最后一个事务
嗯,我有一个csv文件中的数据,它将被插入数据库中。现在我不能保证提供的数据会符合我的需要,所以我想如果有任何异常,那么DB上以前的事务应该是撤销的 我目前所做的是保存数据,直到发现异常为止。我抛出异常,然后在行号处打印异常。我想要的是,整个文件应该再次插入,没有任何重复的行。我怎么做 这是我的密码:-Python 如何撤消Django数据库中的最后一个事务,python,database,django,django-models,Python,Database,Django,Django Models,嗯,我有一个csv文件中的数据,它将被插入数据库中。现在我不能保证提供的数据会符合我的需要,所以我想如果有任何异常,那么DB上以前的事务应该是撤销的 我目前所做的是保存数据,直到发现异常为止。我抛出异常,然后在行号处打印异常。我想要的是,整个文件应该再次插入,没有任何重复的行。我怎么做 这是我的密码:- for row in rows: line += 1 try : obj = XYZ(col1 = row[0],col2=row[1]) ob
for row in rows:
line += 1
try :
obj = XYZ(col1 = row[0],col2=row[1])
obj.save()
except : raise ("Excetion found at line ", line)
我应该如何撤消在异常出现之前完成的所有以前的事务???听起来像是您正在寻找的,引用文档(我的重点): 原子性是数据库事务的定义属性。原子的 允许我们创建一个代码块,其中 数据库是有保证的如果代码块成功 完成后,更改将提交到数据库。如果有 异常情况下,将回滚更改。
所以,如果任何DB事务抛出错误(异常),则所有以前的事务都将回滚,即使我没有捕获到这些错误?@user1162512 yes。另外,请注意,文档特别提到,您不应该捕获原子块内部的异常,而应该捕获原子块周围的异常(我会在这里向您展示,但是文档非常详细,根本不需要)