[python] SQLAlchemy: В чем разница между flush () и commit ()?



Answers

Как говорит @snapshoe

flush() отправляет ваши SQL-запросы в базу данных

commit() совершает транзакцию.

Когда session.autocommit == False:

commit () вызовет flush (), если ваш autoflush == True.

Когда session.autocommit == True:

Вы не можете вызвать commit (), если вы еще не начали транзакцию (чего, вероятно, нет, поскольку вы, вероятно, используете этот режим только для того, чтобы избежать ручного управления транзакциями).

В этом режиме вы должны вызвать flush (), чтобы сохранить изменения ORM. Флеш эффективно также фиксирует ваши данные.

Question

Какая разница между flush() и commit() в SQLAlchemy?

Я читал документы, но я не мудрее - они, похоже, понимают, чего у меня нет.

Меня особенно интересует их влияние на использование памяти. Я загружаю некоторые данные в базу данных из серии файлов (всего около 5 миллионов строк), и моя сессия иногда падает - это большая база данных и машина с небольшой памятью.

Мне интересно, если я использую слишком много commit() и недостаточно вызовов flush() но не понимая, в чем разница, трудно сказать!




Links