SQLAlchemy: я должен зафиксировать обновление между двумя запросами? - PullRequest
0 голосов
/ 23 апреля 2019

За один сеанс, если я хочу:

// make a query on Foo table to get one instance
// update this instance
// commit() or not?
// make the same query on Foo table

Получу ли я одинаковый результат в этих двух запросах? То есть нужно ли фиксировать обновление перед запросом к таблице за один сеанс?

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Нет необходимости выполнять обе фиксации, поскольку каждая транзакция видна для последующих действий в базе данных (или запросов).

Вы можете просто поставить коммит в конец, хотя я не уверен, повлияет ли несколько коммитов на время выполнения.

1 голос
/ 23 апреля 2019

Нет необходимости фиксировать перед повторным запросом.Как правило, обновления внутри транзакции (сеанса) будут видны последующим запросам в той же транзакции даже перед фиксацией.

Сказав, что выполнение одного и того же точного запроса дважды внутри транзакции может быть«Кодовый запах».Стоит учесть, поскольку обновленный объект уже является памятью, действительно ли необходимо снова запрашивать объект?

Кроме того, в зависимости от уровня изоляции базы данных , второй запрос не гарантируетвернуть тот же набор результатов, что и первый.Это может произойти, если другая транзакция изменяет данные до второго запроса.

...