Встречается на собеседованиях • сегодня
Как реализовать транзакции вручную без встроенного механизма
Для реализации транзакций вручную можно использовать паттерн "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
интервью вопросы и ответы