[파이썬] Psycopg2에서 커밋 및 롤백

이번 블로그 포스트에서는 파이썬의 Psycopg2 라이브러리를 사용하여 데이터베이스 트랜잭션에서 커밋과 롤백을 수행하는 방법에 대해 알아보려고 합니다.

Psycopg2란?

Psycopg2는 PostgreSQL 데이터베이스를 Python에서 사용하기 위한 인터페이스입니다. 이 라이브러리는 Python에서 PostgreSQL 데이터베이스에 연결하고 쿼리를 실행하는 기능을 제공합니다.

커밋과 롤백

데이터베이스 트랜잭션에서 커밋과 롤백은 중요한 개념입니다. 커밋은 데이터베이스의 변경 내용을 영구적으로 저장하는 작업이고, 롤백은 변경 내용을 취소하여 이전 상태로 복원하는 작업입니다. 데이터베이스를 정확하고 안전하게 유지하기 위해서는 커밋과 롤백을 적절하게 활용해야 합니다.

커밋하기

Psycopg2를 사용하여 데이터베이스 연결을 설정하고 쿼리를 실행한 후에는 커밋을 수행해야 합니다. 아래는 Psycopg2를 사용하여 데이터베이스 연결을 생성하고 커밋을 수행하는 예시입니다.

import psycopg2

# 데이터베이스 연결 생성
conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432")

# 커서 생성
cur = conn.cursor()

# 쿼리 실행
cur.execute("INSERT INTO mytable (column1, column2) VALUES (%s, %s)", ("value1", "value2"))

# 커밋 수행
conn.commit()

# 연결 닫기
cur.close()
conn.close()

위 예시에서는 psycopg2.connect 함수로 데이터베이스 연결을 생성하고, conn.cursor()로 커서를 생성한 뒤에 cur.execute를 사용하여 쿼리를 실행하고 있습니다. 이후 conn.commit()을 호출하여 변경 내용을 커밋합니다. 마지막으로 연결을 닫아줍니다.

롤백하기

트랜잭션 중에 오류가 발생하거나 데이터를 롤백해야 하는 경우에는 conn.rollback()을 호출하여 이전 상태로 돌아갈 수 있습니다. 아래는 롤백을 수행하는 예시입니다.

import psycopg2

# 데이터베이스 연결 생성
conn = psycopg2.connect(database="mydb", user="myuser", password="mypassword", host="localhost", port="5432")

# 커서 생성
cur = conn.cursor()

try:
    # 쿼리 실행
    cur.execute("INSERT INTO mytable (column1, column2) VALUES (%s, %s)", ("value1", "value2"))

    # 커밋 수행
    conn.commit()
except Exception as e:
    # 롤백 수행
    conn.rollback()
    print(f"An error occurred: {str(e)}")

# 연결 닫기
cur.close()
conn.close()

위 예시에서는 try-except 블록을 사용하여 예외가 발생할 경우 롤백을 수행합니다. 롤백 후에는 예외 메시지를 출력하거나 적절한 예외 처리를 수행할 수 있습니다.

마무리

Psycopg2를 사용하여 데이터베이스 트랜잭션에서 커밋과 롤백을 수행하는 방법에 대해 알아보았습니다. 이러한 기능을 활용하여 데이터베이스 연산을 관리하고, 데이터 일관성과 안전성을 유지할 수 있습니다. Psycopg2 공식 문서에서 더 자세한 내용을 확인하시기 바랍니다.