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

SQLite는 경량의 관계형 데이터베이스 관리 시스템으로서, 작은 규모의 프로젝트에서 많이 사용됩니다. Python에서 SQLite 데이터베이스를 다루기 위해서는 sqlite3 모듈을 사용할 수 있으며, 이 모듈을 통해 데이터베이스 커밋(commit)과 롤백(rollback)을 관리할 수 있습니다.

커밋(commit)

커밋은 SQLite 데이터베이스에서 수행된 변경 사항들을 영구적으로 저장하는 작업입니다. 커밋을 수행하기 전까지는 변경된 내용들이 메모리에만 존재하며, 커밋 이후에야 데이터베이스 파일에 실제로 저장됩니다.

아래의 예제 코드는 Python에서 SQLite 데이터베이스에 접속하고, 테이블을 생성하고, 데이터를 삽입한 뒤에 커밋을 수행하는 과정을 보여줍니다.

import sqlite3

# 데이터베이스 연결
conn = sqlite3.connect('mydatabase.db')

# 커서 생성
cursor = conn.cursor()

# 테이블 생성
cursor.execute('''CREATE TABLE customers
                  (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT)''')

# 데이터 삽입
cursor.execute("INSERT INTO customers (name, email) VALUES (?, ?)", ('John Doe', 'john@example.com'))

# 커밋
conn.commit()

# 연결 해제
conn.close()

위의 코드는 mydatabase.db라는 SQLite 데이터베이스 파일을 생성하고, customers라는 테이블을 만들고, John Doe라는 고객 데이터를 삽입한 뒤에 커밋을 수행합니다. 이후에 mydatabase.db 파일을 열어서 확인하면, 데이터가 실제로 저장되어 있는 것을 확인할 수 있습니다.

롤백(rollback)

롤백은 커밋된 데이터베이스 변경 사항을 이전 상태로 복원하는 작업입니다. 롤백을 사용하면 커밋 이전의 상태로 데이터를 되돌릴 수 있으며, 잘못된 작업을 취소하는 용도로 주로 사용됩니다.

아래의 예제 코드는 커밋 이전 상태로 롤백하는 과정을 보여줍니다.

import sqlite3

# 데이터베이스 연결
conn = sqlite3.connect('mydatabase.db')

# 커서 생성
cursor = conn.cursor()

try:
    # 데이터 삽입
    cursor.execute("INSERT INTO customers (name, email) VALUES (?, ?)", ('Jane Smith', 'jane@example.com'))

    # 롤백
    conn.rollback()
except:
    print("에러 발생")

# 연결 해제
conn.close()

위의 코드는 mydatabase.db에 새로운 데이터를 삽입한 뒤에, conn.rollback()을 호출하여 롤백을 수행합니다. 이렇게 되면 데이터베이스는 이전 상태로 복원되며, 데이터 삽입 작업은 취소됩니다.

SQLite 데이터베이스 커밋과 롤백은 데이터의 안정성과 일관성을 유지하는 데 매우 중요합니다. 따라서 데이터베이스 작업을 수행할 때, 커밋과 롤백을 적절히 활용하여 데이터의 정합성을 보장해야 합니다.