Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 데이터베이스 트랜잭션 처리하기

데이터베이스 트랜잭션이란?

트랜잭션(Transaction)은 데이터의 일관성을 보장하기 위한 핵심 메커니즘입니다. 여러 개의 데이터베이스 작업을 하나의 논리적 작업 단위로 묶어, 모든 작업이 성공적으로 완료되거나 전혀 실행되지 않도록 보장합니다.

트랜잭션은 일반적으로 ACID라고 불리는 다음 네 가지 특성을 가집니다.

  • 원자성(Atomicity) — 트랜잭션은 완전히 실행되거나, 아예 실행되지 않아야 합니다. 중간에 실패하면 모든 변경 사항이 취소됩니다.
  • 일관성(Consistency) — 트랜잭션은 항상 일관된 상태에서 시작되어야 하며, 종료 시에도 시스템을 일관된 상태로 유지해야 합니다.
  • 고립성(Isolation) — 트랜잭션의 중간 결과는 해당 트랜잭션이 진행 중인 동안 외부에서 볼 수 없습니다.
  • 지속성(Durability) — 트랜잭션이 한번 커밋(commit)되면, 그 이후 시스템 장애가 발생하더라도 그 결과는 영구적으로 저장됩니다.

파이썬 DB API 2.0의 트랜잭션 메서드

파이썬 DB API 2.0은 트랜잭션을 제어할 수 있는 두 가지 메서드를 제공합니다.

  • commit() — 데이터베이스에 대한 변경 사항을 확정하고 저장합니다.
  • rollback() — 오류가 발생했을 때 마지막 커밋 이후의 모든 변경 사항을 되돌립니다.

트랜잭션 구현 예제

다음은 파이썬에서 트랜잭션을 구현하는 대표적인 예제입니다. DELETE 쿼리를 실행하고, 성공 시 커밋하고 오류 발생 시 롤백하는 구조입니다.

# 삭제할 레코드를 위한 SQL 쿼리 준비
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
    # SQL 명령 실행
    cursor.execute(sql)
    # 데이터베이스에 변경 사항 커밋
    db.commit()
except:
    # 오류 발생 시 롤백
    db.rollback()

코드 설명

  1. SQL 쿼리 준비: 나이가 20보다 큰 직원 레코드를 삭제하는 SQL 문을 문자열로 생성합니다.
  2. 쿼리 실행: cursor.execute()로 SQL 명령을 실행합니다.
  3. 커밋: 실행이 성공하면 db.commit()을 호출하여 변경 사항을 데이터베이스에 영구 반영합니다.
  4. 롤백: 실행 중 오류가 발생하면 db.rollback()을 호출하여 데이터베이스를 이전 상태로 되돌립니다.

마무리

트랜잭션은 데이터 무결성을 지키기 위해 반드시 이해하고 활용해야 하는 개념입니다. 특히 여러 사용자가 동시에 데이터베이스에 접근하는 환경에서는 commit()rollback()을 적절히 사용하여 데이터 손상을 방지하는 것이 매우 중요합니다. try-except 구문과 함께 트랜잭션을 활용하면 안정적인 데이터베이스 애플리케이션을 개발할 수 있습니다.