2017-12-04 7 views
0

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 파일을 만들고 데이터베이스에 레코드를 추가하려고하지만 둘 중 하나가 실패하면 다른 레코드를 실행 취소하고 싶습니다. 그것은 두 번째 시도가 실패 할 경우 첫 번째 작업을 실행 취소하는 것을 처리하기 위해 내부를 제외하고 다른 시도를 제외하고 시도를하는 것이 지저분 해 보입니다. 시도를 사용두 개의 종속 작업을 처리하는 Python 오류

try: 
    open and write file 
except: 
    pass 
else: 
    try: 
     add record to db 
    except: 
     delete file 

답변

0

/제외하고는 충분하다 :

try: 
    open and write file 
    try: 
     add record to db 
    except: 
     delete file 
except: 
    pass 
0

당신이 당신이하고 싶었던 말했다과 코드가 무엇을 다를 수 있습니다. open and write file의 구현에 따라 삭제되지 않은 파일이 남을 수 있습니다.


솔루션

"플랫 중첩보다 낫다"- 파이썬

try: 
    open and write file 
    add record to db 
except: 
    delete file 
    rollback database session 

당신은 한 단계 더 걸릴 당신이로 사용할 수있는 컨텍스트 관리자를 만들 수 있습니다 다음과 같습니다 :

with record() as rec: 
    open and write record to file 
    add record to db