[python] 파이썬 Psycopg2를 사용하여 PostgreSQL 데이터베이스에서 트랜잭션을 관리하는 방법은?

이 블로그 포스트에서는 파이썬 Psycopg2 라이브러리를 사용하여 PostgreSQL 데이터베이스에서 트랜잭션을 관리하는 방법에 대해 알아보겠습니다.

Psycopg2는 파이썬에서 PostgreSQL 데이터베이스에 접속하기 위한 인터페이스 도구입니다. 해당 라이브러리를 사용하면 파이썬 스크립트에서 트랜잭션을 시작하고 커밋 또는 롤백하는 등의 트랜잭션 관리를 할 수 있습니다.

아래는 Psycopg2를 사용하여 PostgreSQL 데이터베이스에서 트랜잭션을 관리하는 간단한 예제 코드입니다.

import psycopg2

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

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

try:
    # 트랜잭션 시작
    conn.autocommit = False

    # 실행할 쿼리 작성
    query1 = "INSERT INTO mytable (column1, column2) VALUES (%s, %s)"
    query2 = "UPDATE mytable SET column1 = %s WHERE column2 = %s"

    # 쿼리 실행
    cur.execute(query1, ('value1', 'value2'))
    cur.execute(query2, ('new_value1', 'value2'))

    # 커밋
    conn.commit()

    print("트랜잭션 완료")

except psycopg2.DatabaseError as e:
    # 롤백
    conn.rollback()
    print(f"트랜잭션 롤백: {e}")

finally:
    # 연결 종료
    cur.close()
    conn.close()

위 예제 코드에서는 psycopg2.connect() 함수를 사용하여 PostgreSQL 데이터베이스에 연결합니다. 그 후 conn.cursor() 메서드로 커서를 생성하고, conn.autocommit 속성을 False로 설정하여 트랜잭션 모드로 전환합니다.

그 다음 cur.execute() 메서드를 사용하여 쿼리를 실행합니다. INSERT, UPDATE, DELETE 등의 쿼리를 실행할 수 있습니다.

성공적으로 쿼리를 실행하고 나면 conn.commit() 메서드를 호출하여 변경 내용을 커밋합니다. 만약 에러가 발생한다면 conn.rollback()을 호출하여 롤백합니다.

마지막으로 cur.close()conn.close()를 사용하여 커서와 연결을 종료합니다.

트랜잭션이 성공적으로 완료되면 “트랜잭션 완료”라는 메시지가 출력되며, 에러가 발생하면 해당 에러 메시지가 출력됩니다.

이렇게 Psycopg2를 사용하여 PostgreSQL 데이터베이스에서 트랜잭션을 관리할 수 있습니다. Psycopg2에 대한 더 자세한 정보는 공식 문서를 참조하시기 바랍니다.