sqlalchemy flush commit rollback

• SQLAlchemy는 파이썬의 ORM으로, DB 테이블의 행을 파이썬 객체에 매핑하여 파이썬 문법으로 조작할 수 있게 해준다. 이때, session이라는 개념을 사용하여 DB에 변경을 가하는 트랜잭션을 관리한다.
• session 객체는 `session.add()`로 트랜잭션 작업을 등록하지만, `session.flush()`가 호출되기 전까지는 DB에 전달하지 않는다. `session.flush()`는 DB의 트랜잭션 버퍼에 일련의 작업을 전달하는 역할을 한다.
• `session.commit()`은 DB에 변경을 영구적으로 반영하는 역할을 하며, `flush()`는 항상 `commit()`이 호출될 때 같이 호출된다. 반면, `rollback()`은 DB 트랜잭션 버퍼에 있는 것들을 버리는 역할을 한다.
• `rollback()`을 호출해도 이미 늦은 경우는 두 가지가 있다. 첫째, autocommit=True인 상황에서 flush()를 호출한 경우와 둘째, commit()를 호출한 경우이다. 이 경우에는 `rollback()`을 호출해도 이미 DB에 반영된 상태이므로 되돌릴 수 없다.

북마크
공유하기
신고하기