[파이썬] Psycopg2에서 트랜잭션 관리

개요

Psycopg2는 PostgreSQL 데이터베이스에 연결하고 상호작용하기 위한 Python의 인기 있는 라이브러리입니다. 이 라이브러리를 사용하면 Python 프로그램에서 PostgreSQL 데이터베이스에 접속하고 SQL 문을 실행할 수 있습니다. 이번 블로그 글에서는 Psycopg2를 사용하여 트랜잭션을 관리하는 방법에 대해 알아보겠습니다.

트랜잭션의 개념

트랜잭션은 데이터베이스의 상태를 변화시키는 작업의 단위입니다. 여러 개의 SQL 문이 하나의 트랜잭션으로 묶일 수 있습니다. 트랜잭션은 다음과 같은 ACID 특징을 가지고 있습니다:

Psycopg2에서의 트랜잭션 관리

Psycopg2는 트랜잭션을 관리하기 위한 다양한 메소드와 동작을 제공합니다. 다음은 Psycopg2를 사용하여 트랜잭션을 시작하고 커밋(commit) 혹은 롤백(rollback)하는 간단한 예제입니다:

import psycopg2

def perform_database_operations():
    conn = psycopg2.connect(database="mydatabase", user="myuser", password="mypassword", host="myhost", port="myport")
    cur = conn.cursor()
    
    try:
        # 트랜잭션 시작
        conn.autocommit = False
        
        # SQL 문 실행
        cur.execute("INSERT INTO mytable (name, age) VALUES ('John', 25)")
        cur.execute("UPDATE mytable SET age = 30 WHERE name = 'John'")
        
        # 트랜잭션 커밋
        conn.commit()
        print("트랜잭션 성공적으로 커밋됨")
        
    except Exception as e:
        # 트랜잭션 롤백
        conn.rollback()
        print("트랜잭션 롤백됨:", str(e))
        
    finally:
        cur.close()
        conn.close()

위의 예제에서 conn.autocommit = False로 설정하면 자동 커밋을 해제합니다. 이후 conn.commit()으로 트랜잭션을 커밋하거나 conn.rollback()으로 트랜잭션을 롤백할 수 있습니다. 롤백은 예외가 발생했을 때 수행될 수 있습니다.

결론

Psycopg2를 사용하여 트랜잭션을 관리하는 것은 PostgreSQL 데이터베이스와 상호작용하는 Python 애플리케이션을 개발하는 데 있어 중요한 부분입니다. 트랜잭션을 적절하게 관리하면 데이터의 일관성과 안정성을 유지할 수 있으며, 예외 처리와 롤백을 통해 에러 상황을 처리할 수 있습니다. Psycopg2의 트랜잭션 관리 기능을 잘 활용하여 안정적인 데이터베이스 처리를 구현해보세요.

이상으로 Psycopg2에서 트랜잭션 관리에 대해 알아보았습니다. 감사합니다.