Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
我需要在事务中包装django更新吗?_Django_Django Models_Transactions_Django Orm - Fatal编程技术网

我需要在事务中包装django更新吗?

我需要在事务中包装django更新吗?,django,django-models,transactions,django-orm,Django,Django Models,Transactions,Django Orm,假设我正在django中运行几个模型对象的更新: SomeModel.objects.filter(name="abc").update(name="xyz") 我是否需要将其包装在transaction.atomic中?如果我不这样做,会发生什么不好的事情吗?Django的默认事务模型是自动提交到db。这意味着,如果在提交某些更改之后,但在提交所有更改之前出现异常,您可能最终会遇到问题,或者不会出现问题。这取决于你到底想做什么。基于您自己的代码,这是一个潜在的问题吗?是否存在发生错误的风险?

假设我正在django中运行几个模型对象的更新:

SomeModel.objects.filter(name="abc").update(name="xyz")

我是否需要将其包装在
transaction.atomic
中?如果我不这样做,会发生什么不好的事情吗?

Django的默认事务模型是自动提交到db。这意味着,如果在提交某些更改之后,但在提交所有更改之前出现异常,您可能最终会遇到问题,或者不会出现问题。这取决于你到底想做什么。基于您自己的代码,这是一个潜在的问题吗?是否存在发生错误的风险?如果存在,是否会出现某些对象已更新但其他对象未更新的问题


如果是这样,您可以通过使用@transaction.atomic decorator(对于函数)或使用
with transaction.atomic():
包装特定代码片段来防止这种情况。这将在发生错误时回滚对数据库的更改。为了超级安全,我想您可以一直使用原子事务,但您需要吗?

Django的默认事务模型是自动提交到db。这意味着,如果在提交某些更改之后,但在提交所有更改之前出现异常,您可能最终会遇到问题,或者不会出现问题。这取决于你到底想做什么。基于您自己的代码,这是一个潜在的问题吗?是否存在发生错误的风险?如果存在,是否会出现某些对象已更新但其他对象未更新的问题

如果是这样,您可以通过使用@transaction.atomic decorator(对于函数)或使用
with transaction.atomic():
包装特定代码片段来防止这种情况。这将在发生错误时回滚对数据库的更改。为了超级安全,我想你可以一直使用原子事务,但是你需要吗