Встречается на 1% собеседований по Python
Как реализовать транзакции вручную без встроенного механизма
Для реализации транзакций вручную можно использовать паттерн "Unit of Work". Основная идея - накапливать изменения и применять их атомарно. Пример с базой данных:
python
class ManualTransaction:
def __init__(self, connection):
self.connection = connection
self.operations = []
def add_operation(self, query, params=None):
self.operations.append((query, params or ()))
def commit(self):
cursor = self.connection.cursor()
try:
for query, params in self.operations:
cursor.execute(query, params)
self.connection.commit()
self.operations = []
except Exception as e:
self.connection.rollback()
raise e
def rollback(self):
self.operations = []Использование:
python
conn = get_db_connection()
tx = ManualTransaction(conn)
try:
tx.add_operation("INSERT INTO users VALUES (?, ?)", (1, "Alice"))
tx.add_operation("UPDATE accounts SET balance = balance + 100 WHERE user_id = ?", (1,))
tx.commit()
except:
tx.rollback()Ключевые моменты:
- Все операции собираются, но не выполняются до commit()
- При ошибке вызывается rollback()
- Подходит для простых случаев, но не заменяет полноценные транзакции СУБД

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы