Встречается на собеседованиях • сегодня

В чем разница между commit и flush в SQLAlchemy

commit и flush в SQLAlchemy выполняют разные функции, хотя оба связаны с отправкой изменений в БД.

flush() синхронизирует сессию с БД, отправляя pending изменения (INSERT, UPDATE, DELETE), но не фиксирует транзакцию. Изменения видны в текущей транзакции, но могут быть откачены. Пример:

python
session.add(user)
session.flush()  # SQL отправлен, но транзакция не завершена

commit() фиксирует транзакцию, выполняя неявный flush, и делает изменения постоянными. После commit() новая транзакция начинается автоматически:

python
session.commit()  # Изменения сохранены в БД

Ключевые отличия:

  1. flush не завершает транзакцию, commit - завершает
  2. После flush можно откатить изменения, после commit - нет
  3. commit автоматически вызывает flush
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы