[파이썬] SQLite 데이터베이스 트랜잭션

When working with databases, data integrity is of utmost importance. Transactions play a critical role in ensuring that data changes are made reliably and consistently. In this blog post, we will explore how to use transactions with SQLite databases in Python.

Introduction to Transactions

A database transaction represents a sequence of operations that are executed as a single unit of work. These operations can include inserting, updating, or deleting records in a database. Transactions ensure that all these operations are either successfully completed or rolled back if an error occurs.

In SQLite, transactions have the following properties:

Using Transactions in Python

To work with SQLite databases in Python, we need to use the sqlite3 module, which is included in the Python standard library. Let’s take a look at an example:

import sqlite3

# Connect to the SQLite database
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()

try:
    # Begin a transaction
    conn.begin()

    # Perform database operations
    cursor.execute("INSERT INTO customers (name, email) VALUES (?, ?)", ('John Doe', 'john.doe@example.com'))
    cursor.execute("UPDATE customers SET email = ? WHERE id = ?", ('jane.doe@example.com', 2))
    cursor.execute("DELETE FROM customers WHERE id = ?", (3,))

    # Commit the transaction
    conn.commit()
    print("Transaction successfully committed.")

except Exception as e:
    # Rollback the transaction in case of an error
    conn.rollback()
    print("Transaction rolled back due to an error:", str(e))

finally:
    # Close the database connection
    conn.close()

In the above example, we first establish a connection to the SQLite database using the connect() function. Then, we create a cursor object to execute SQL statements.

Inside a try-except-finally block, we begin the transaction using conn.begin(). We perform several database operations like inserting, updating, and deleting records. If all the operations are successful, we commit the transaction using conn.commit(), marking the changes as permanent. If any error occurs, we roll back the transaction using conn.rollback() to revert all the changes.

Finally, we close the connection to the database.

Summary

In this blog post, we explored the concept of database transactions and how to use them with SQLite in Python. Transactions ensure data integrity by grouping multiple database operations into a single atomic unit. By using transactions, we can maintain consistency, isolation, and durability in our database operations.

Remember to always use transactions when working with critical data to avoid inconsistencies and handle errors gracefully.