Junior — Middle
Have you ever worked with ACID principles in database transactions?
sobes.tech AI
Answer from AI
Yes, when working with databases in Python, it is often necessary to consider the ACID principles (Atomicity, Consistency, Isolation, Durability) to ensure transaction reliability.
- Atomicity guarantees that all operations within a transaction are completed fully or not at all.
- Consistency ensures that the database transitions from one valid state to another.
- Isolation prevents concurrent transactions from affecting each other.
- Durability guarantees that transaction results are saved even in case of failures.
In Python, using libraries like sqlite3 or ORM frameworks (e.g., SQLAlchemy), transactions can be explicitly controlled:
import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
try:
conn.execute('BEGIN')
cursor.execute("INSERT INTO users (name) VALUES ('Alice')")
cursor.execute("INSERT INTO accounts (user_id, balance) VALUES (last_insert_rowid(), 1000)")
conn.commit() # Commit the transaction
except Exception as e:
conn.rollback() # Rollback the transaction on error
print(f"Error: {e}")
finally:
conn.close()
Thus, adhering to ACID helps prevent partial changes and maintain data integrity.