Работал ли с транзакциями
Python
Middle
Без компании
Работал ли с транзакциями
Ответы
Да, работал с транзакциями в контексте баз данных. В Python чаще всего использую транзакции при работе с ORM (например, SQLAlchemy) или напрямую через DB-API (psycopg2 для PostgreSQL, sqlite3 и т.д.).
Основные принципы:
- ACID (атомарность, согласованность, изолированность, долговечность)
- Использование `commit()` и `rollback()`
- Контекстные менеджеры для автоматического управления
Пример с SQLAlchemy:
```
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('sqlite:///mydb.db')
Session = sessionmaker(bind=engine)
try:
session = Session()
# Операции внутри транзакции
session.add(some_object)
session.commit()
except Exception as e:
session.rollback()
print(f"Error: {e}")
finally:
session.close()
```
Пример с psycopg2:
```
import psycopg2
conn = psycopg2.connect("dbname=test user=postgres")
try:
with conn:
with conn.cursor() as cursor:
cursor.execute("INSERT INTO table VALUES (%s)", (value,))
# Автоматический commit при успехе или rollback при ошибке
except Exception as e:
print(f"Transaction failed: {e}")
finally:
conn.close()
```