[python] 파이썬과 데이터베이스 트랜잭션 관리
데이터베이스 트랜잭션을 관리하는 것은 애플리케이션의 데이터 무결성을 유지하는 중요한 부분입니다. 파이썬에서는 데이터베이스 트랜잭션을 다루는 여러 가지 방법이 있습니다. 이 블로그 포스트에서는 파이썬에서 데이터베이스 트랜잭션을 어떻게 처리하는지 살펴보겠습니다.
파이썬의 DB-API
파이썬은 DB-API를 통해 다양한 데이터베이스와 상호작용할 수 있는 데이터베이스 API 표준을 제공합니다. DB-API를 이용하면 데이터베이스 연결, 쿼리 실행, 트랜잭션 관리 등의 작업을 수행할 수 있습니다.
import sqlite3
# 데이터베이스 연결
conn = sqlite3.connect('example.db')
cur = conn.cursor()
try:
# 트랜잭션 시작
conn.execute('BEGIN')
# 여러 쿼리 실행
cur.execute("INSERT INTO table1 (col1) VALUES ('val1')")
cur.execute("INSERT INTO table2 (col2) VALUES ('val2')")
# 트랜잭션 커밋
conn.commit()
except:
# 예외 발생 시 롤백
conn.rollback()
# 연결 닫기
conn.close()
위 예제는 파이썬의 sqlite3
모듈을 사용하여 데이터베이스 트랜잭션을 수행하는 간단한 예시입니다.
ORM 사용하기
파이썬에서 ORM(Object-Relational Mapping)을 사용하면 데이터베이스 테이블과 객체를 매핑하여 쉽게 데이터를 다룰 수 있습니다. 대표적으로 SQLAlchemy와 Django의 ORM이 있습니다.
from sqlalchemy import create_engine, text
from sqlalchemy.orm import sessionmaker
# 데이터베이스 연결
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
session = Session()
try:
# 트랜잭션 시작
session.begin()
# 여러 쿼리 실행
session.execute(text("INSERT INTO table1 (col1) VALUES ('val1')"))
session.execute(text("INSERT INTO table2 (col2) VALUES ('val2')"))
# 트랜잭션 커밋
session.commit()
except:
# 예외 발생 시 롤백
session.rollback()
위 예제는 SQLAlchemy를 사용하여 데이터베이스 트랜잭션을 다루는 예시입니다.
결론
파이썬에서 데이터베이스 트랜잭션을 다루는 방법은 다양합니다. DB-API를 직접 다루거나 ORM을 사용하는 방법 등 여러 가지 방법 중 적절한 방법을 선택하여 데이터의 무결성을 보장하는 것이 중요합니다.
참고 자료:
- 파이썬 공식 문서: https://docs.python.org/3/library/sqlite3.html
- SQLAlchemy 공식 문서: https://docs.sqlalchemy.org/en/14/