Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何撤消Django数据库中的最后一个事务_Python_Database_Django_Django Models - Fatal编程技术网

Python 如何撤消Django数据库中的最后一个事务

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

嗯,我有一个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)

我应该如何撤消在异常出现之前完成的所有以前的事务???

听起来像是您正在寻找的,引用文档(我的重点):

原子性是数据库事务的定义属性。原子的 允许我们创建一个代码块,其中 数据库是有保证的如果代码块成功 完成后,更改将提交到数据库。如果有 异常情况下,将回滚更改。


所以,如果任何DB事务抛出错误(异常),则所有以前的事务都将回滚,即使我没有捕获到这些错误?@user1162512 yes。另外,请注意,文档特别提到,您不应该捕获原子块内部的异常,而应该捕获原子块周围的异常(我会在这里向您展示,但是文档非常详细,根本不需要)