2015-12-03 7 views
0

мне нужен ответ в этой статье о том, как получить идентификатор вновь вставленной записи базы данных: sqlalchemy flush() and get inserted id?SQLAlchemy, атомарность и получать вставлено идентификатор

Я задаюсь вопросом о атомарностью фиксаций. Например, предположим, что я совершил новый элемент в db, а затем вернул идентификатор. Теперь я хочу выполнить некоторую дополнительную обработку и, возможно, добавить идентификатор элемента в качестве внешнего ключа в другую таблицу. Это нарушает атомарность, поскольку я хотел бы зафиксировать db только после того, как я сделал эту дополнительную обработку. Разве это не похоже на проблему? Я столкнулся с этой проблемой в своем проекте.

ответ

1

.flush() ничего не совершает. Единственным эффектом .flush() (и более позднего .rollback()) является увеличение AUTO_INCREMENT таблицы (например, если последняя зафиксированная запись имела ID 13, а затем вы .add(), .flush() и .rollback() ваша новая запись, следующая вставленная запись получит ID 15 вместо ID 14.

 Смежные вопросы

  • Нет связанных вопросов^_^