작성
·
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가 생성되지 않는 것을 확인하실 수 있을 겁니다.
감사합니다.
답변 감사 드립니다.
이해가 부족했던 부분들이 전부 이해가 되었습니다 ^^