인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

bluebamus님의 프로필 이미지
bluebamus

작성한 질문수

FastAPI 완벽 가이드

신규 Blog 글 생성하기 - 01

rollback에 대해 질문 드려요

작성

·

16

·

수정됨

0

현재 "신규 Blog 글 생성하기 - 01" 강의를 수강 중입니다.

강의 중에, 쿼리의 commit() 실패시 rollback()이 자동으로 수행된다고 말씀 하셨는데,

코드상에 with를 사용한 것도 아니고, context_get_conn()의 에러 발생시 rollback() 호출도 하지 않는데

rollback()이 자동으로 수행되는게 맞는가요?

close를 하면 자동으로 rollback() 된다고 하시는데

close는 성공시에도 호출하는 것으로 코드를 이해하고 있습니다.

insert, update의 성공시에도 rollback()이 되는게 맞는지도 알고 싶습니다.

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

SQLAlchemy Engine이 MySQL DB connection close() 될 때 자동으로 rollback()을 수행합니다.

auto commit 이 되어 있지 않기 때문에 명시적으로 commit()을 호출하지 않고 close() 되면 insert/update/delete 수행되더라도 DB에 적용되지 않고 rollback() 됩니다.

create_blog() 수행함수에서 conn.commit()를 삭제하고 다시 테스트를 해보시면 blog가 생성되지 않는 것을 확인하실 수 있을 겁니다.

감사합니다.

 

bluebamus님의 프로필 이미지
bluebamus
질문자

답변 감사 드립니다.

이해가 부족했던 부분들이 전부 이해가 되었습니다 ^^

bluebamus님의 프로필 이미지
bluebamus

작성한 질문수

질문하기