[python] 파이썬과 트랜잭션 관리 방법

트랜잭션은 데이터베이스 처리시 중요한 개념 중 하나입니다. 파이썬에서 데이터베이스를 다루는 경우에도 트랜잭션을 적절하게 관리해야 합니다. 이번 블로그 글에서는 파이썬에서 트랜잭션을 관리하는 방법에 대해 알아보겠습니다.

1. 데이터베이스 연결

먼저, 파이썬에서 데이터베이스에 접속하기 위해서는 해당 데이터베이스와의 연결이 필요합니다. 대표적인 파이썬 데이터베이스 라이브러리인 psycopg2를 사용해보도록 하겠습니다. 다음은 PostgreSQL 데이터베이스에 연결하는 예제 코드입니다.

import psycopg2

conn = psycopg2.connect(
    host="localhost",
    port="5432",
    database="mydatabase",
    user="myuser",
    password="mypassword"
)

psycopg2를 사용하여 psycopg2.connect() 함수를 호출하고 연결에 필요한 정보를 전달하면 데이터베이스와의 연결이 생성됩니다.

2. 트랜잭션 관리

트랜잭션은 데이터베이스 작업의 일련의 단위입니다. 파이썬에서 트랜잭션을 관리하기 위해서는 트랜잭션 시작, 커밋, 롤백의 개념을 이해해야 합니다.

# 트랜잭션 시작
conn.autocommit = False
cur = conn.cursor()

try:
    # 트랜잭션 처리
    cur.execute("INSERT INTO users (name, email) VALUES (%s, %s)", ("John Doe", "johndoe@example.com"))
    cur.execute("UPDATE users SET email = %s WHERE name = %s", ("janedoe@example.com", "Jane Doe"))
    
    # 커밋
    conn.commit()
except Exception as e:
    # 롤백
    conn.rollback()
    print("트랜잭션 롤백")
finally:
    # 커서와 연결 해제
    cur.close()
    conn.close()

위의 예제 코드에서는 conn.autocommit = False으로 트랜잭션을 자동으로 커밋하지 않도록 설정합니다. 그리고 conn.cursor()를 호출하여 커서를 생성합니다. 트랜잭션 내에서 수행할 데이터베이스 작업을 cur.execute()를 사용하여 실행하고, 문제가 발생하지 않는다면 conn.commit()을 호출하여 트랜잭션을 커밋합니다. 만약 예외가 발생한다면 conn.rollback()을 호출하여 트랜잭션을 롤백합니다. 마지막으로, 커서와 연결을 해제합니다.

3. 예외 처리

트랜잭션 처리 중에 예외가 발생할 수 있습니다. 이 경우 롤백하여 데이터의 일관성을 유지해야 합니다. 따라서 try-except-finally 문을 활용하여 트랜잭션 처리 중에 발생하는 예외를 적절하게 처리하는 것이 중요합니다.

try:
    # 트랜잭션 처리
except Exception as e:
    # 예외 처리 및 롤백
    conn.rollback()
finally:
    # 커서와 연결 해제

예외 처리 블록에서는 예외가 발생한 경우에 롤백을 수행하고, 마지막으로 커서와 연결을 해제하는 것이 좋습니다.

마무리

파이썬에서 데이터베이스 작업을 수행할 때는 트랜잭션을 적절하게 관리해야 합니다. 이를 위해 데이터베이스 연결을 설정하고, 트랜잭션 시작, 커밋, 롤백을 제대로 처리해야 합니다. 또한 예외 처리를 통해 트랜잭션 중에 발생하는 예외를 적절하게 처리해야 합니다.

이번 글을 통해 파이썬에서 트랜잭션을 관리하는 방법을 알아보았습니다. 효율적인 트랜잭션 관리를 통해 데이터베이스 작업의 안정성과 일관성을 유지할 수 있습니다.


참고문헌: