[TIL 25일차] 데브코스 데이터엔지니어링

heering·2023년 5월 12일
0
  • cur.execute('COMMIT;')conn.commit()은 동일한 결과, rollback도 마찬가지

  • 에러처리

# autocommit=False
try:
  cur.execute("DELETE FROM adhoc.test_name_gender;") 
  cur.execute("INSERT INTO adhoc.test_name_gender VALUES ('Claire', 'Female');")
  conn.commit()
except (Exception, psycopg2.DatabaseError) as error:
  print(error)
  conn.rollback() # 에러 나서 처리 안됐으면 롤백
finally :
  conn.close()
  • 트랜잭션

    • Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법
    • 은행 계좌를 예로 들면 인출과 입금은 동시에 성공하던지 실패해야하므로, 이 과정들을 트랜잭션으로 묶어줘야 한다. (조회 말고 수정/추가/삭제하는 거에만 묶는 의미가 있음)
  • 트랜잭션 커밋 모드

  1. autocommit = True
    모든 레코드 수정/삭제/추가 작업이 기본적으로 바로 DB에 쓰여짐. (=커밋)
    특정 작업을 트랜잭션으로 묶고 싶다면, BEGIN & END(=COMMIT) or ROLLBACK으로 처리
  2. autocommit = False
    모든 레코드 수정/삭제/추가 작업이 COMMIT 호출될 때까지 커밋되지 않음
  • TRUNCATE는 Transaction을 지원하지 않음(=rollback이 안됨)

0개의 댓글