[파이썬] MySQL 데이터베이스 커밋과 롤백

MySQL 데이터베이스는 많은 애플리케이션에서 중요한 역할을 수행합니다. 애플리케이션의 데이터를 안정적으로 보호하기 위해, 커밋과 롤백과 같은 트랜잭션 기능은 매우 중요합니다.

이 블로그 포스트에서는 Python과 MySQL을 사용하여 데이터베이스 커밋과 롤백을 어떻게 처리하는지에 대해 알아보겠습니다.

커밋 (Commit)

커밋은 데이터베이스의 변경 사항을 영구적으로 저장하는 작업입니다. 이는 트랜잭션의 모든 변경이 반영되고 데이터베이스가 일관된 상태를 유지하는데 도움이 됩니다.

Python에서 MySQL 데이터베이스 커밋을 수행하기 위해 commit() 메서드를 사용합니다. 아래는 예제 코드입니다.

import mysql.connector

# MySQL 연결 설정
connection = mysql.connector.connect(
    host="localhost",
    user="username",
    password="password",
    database="database_name"
)

# MySQL 커서 생성
cursor = connection.cursor()

# 변경 사항을 수행하는 쿼리 실행
try:
    cursor.execute("INSERT INTO users (name, age) VALUES ('John', 25)")
    cursor.execute("UPDATE users SET age = 30 WHERE name = 'John'")
    
    # 커밋
    connection.commit()
    print("커밋 완료")
except:
    # 롤백
    connection.rollback()
    print("롤백")

# 커서와 연결 닫기
cursor.close()
connection.close()

위의 예제 코드에서, connection.commit()은 변경 사항을 영구적으로 저장합니다.

롤백 (Rollback)

롤백은 트랜잭션 중에 발생하는 오류나 예외 상황을 처리하기 위해 사용됩니다. 롤백은 변경 사항을 취소하고 이전 상태로 되돌리는 작업을 수행합니다.

Python에서 MySQL 데이터베이스 롤백을 수행하기 위해 rollback() 메서드를 사용합니다. 아래는 예제 코드입니다.

import mysql.connector

# MySQL 연결 설정
connection = mysql.connector.connect(
    host="localhost",
    user="username",
    password="password",
    database="database_name"
)

# MySQL 커서 생성
cursor = connection.cursor()

# 변경 사항을 수행하는 쿼리 실행
try:
    cursor.execute("INSERT INTO users (name, age) VALUES ('John', 25)")
    cursor.execute("UPDATE users SET age = 30 WHERE name = 'John'")
    
    # 커밋
    connection.commit()
    print("커밋 완료")
except:
    # 롤백
    connection.rollback()
    print("롤백")

# 커서와 연결 닫기
cursor.close()
connection.close()

위의 예제 코드에서, 로직이 예외를 발생시킬 경우 connection.rollback()이 호출되어 이전 상태로 롤백됩니다.

결론

MySQL 데이터베이스에서 Python을 사용하여 커밋과 롤백을 다루는 방법에 대해 알아보았습니다. 커밋은 변경 사항을 영구 저장하고, 롤백은 오류나 예외 상황을 처리하여 이전 상태로 돌리는데 사용됩니다. 이러한 기능을 사용하여 데이터의 안정성과 일관성을 유지할 수 있습니다.