[英]Catched except in django transaction.atomic() block rollbacks transaction
我有這樣的代碼塊:
with transaction.atomic():
for i in some_objects:
stop_object(i)
for i in some_objects:
try:
activate_object(i)
except IntegrityError as e:
pass
測試用py.test編寫。 由於某種原因,當我捕獲IntegrityError時,所有事務都將回滾,並且我具有與以前完全相同的狀態。
我確定事務僅應在未捕獲的錯誤上回滾。 我想念什么嗎?
也不確定如何調試它。 如果您有任何想法,請分享。
原來需要添加另一個transaction.atomic()塊:
with transaction.atomic():
for i in some_objects:
stop_object(i)
for i in some_objects:
try:
with transaction.atomic():
activate_object(i)
except IntegrityError as e:
pass
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.