引发异常时Django回滚不会发生

2024-06-01 20:47:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在设置.py在

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'diva',
    'USER': 'root',
    'PASSWORD': 'admin',
    'ATOMIC_REQUESTS':True,
    'HOST': 'localhost',
    'PORT': '3306',
},

}

在视图.py在

^{pr2}$

在我的代码中,如果它引发了ObjectDoesNotExist异常回滚没有发生,有人能用例子解释一下事务在django中是如何工作的吗。在


Tags: djangonamepydefaultdbadminmysqlroot
1条回答
网友
1楼 · 发布于 2024-06-01 20:47:07

这是正确的。行为django将回滚一个事务,如果发生异常,但该异常必须是DatabaseError或其子类之一(最显著的IntegrityError)

ObjectDoesNotExist不是DatabaseError的子类,因此没有理由回滚此事务。在

最后但并非最不重要。不要捕获Exception始终捕获您要查找的特定异常。在

相关问题 更多 >