Explore my side projects and work using this link

Upsidedown is a WordPress theme design that brings blog posts rising above inverted header and footer components.

장고 ORM Transaction 써보기

Written in

by

Advertisements

여러 테이블에 걸쳐서 동시에 수행이 딱딱 같이 되어야 하는 몇개의 일련적인 동작의 일치성을 위해 transaction 기능을 써보도록 하자! 관련하여 아주 좋은 블로그 글 링크가 있어서 일단 소개합니다.

Django DB Transaction 1편 – Request와 DB Transaction 묶기(Feat. ATOMIC_REQUESTS)
Introduction – Django DB Transaction 안녕하세요. 새해에는 Django와 관련된 글들을 많이 다뤄 보려고 합니다. 첫 번째로 Django에서 DB Transaction을 다루는 방법에 대해서 공부하고 글을 써보려고 합니다…

다른건 몰라도, 사용법은 간단하게 아래와 같이 구성했다.

with transaction.atomic() 이 구문이 전부이다.

    try:        with transaction.atomic():            query1            query2            query3 ...    except Exception as e:        print("re", str(e))        return 400, make_message_response(400, str(e))

쿼리들 사이에 오류가 발생하거나 사용자 에러가 발생하면 그냥 단순하게 raise Exception("에러메시지")

이렇게 하면 이미 수행된 쿼리들의 결과를 다시 롤백해주는 효과를 가져다 준다.

위의 블로그에서 소개한데로 request 별로 아예 ATOMIC 을 잡아주는 옵션이 있지만 자기가 원하는 대로 설계하는 것이 좋지 않나 싶다… 암튼 굿럭~

많은 곳에서 언급되지만, try except 는 with transaction.atomic() 바깥으로 해야 한다고 강력히 권고된다. 주의하세요. 😊

Advertisements