SQLAlchemy Для запроса только для чтения, что использовать: session.expire () vs session.commit ()? - PullRequest
1 голос
/ 27 июня 2019

Я совершенно смущен необходимостью session.commit() во время запроса SQLAlchemy, чтобы избежать устаревших данных, в ситуациях, когда я только выбираю / считываю данные из базы данных.

Существует также опция session.expire (), которая, очевидно, вызывается после session.commit() {при условии, что expire_on_commit = True, что по умолчанию}}.

Если я только получаюданных из базы данных, необходимо ли использовать только session.commit() или session.expire()?

В нашей текущей настройке session.commit() выполняет свою работу.Будет ли замена его на session.expire() сохранить решение?

Требуются дни, чтобы проверить, устареют ли данные.У нас нет базы данных, и мы не должны ничего там менять.Боюсь, session.commit() может случайно отправить изменения в базу данных.

1 Ответ

0 голосов
/ 27 июня 2019

По истечении сеанса запрашивается выборка из базы данных при следующем попытке доступа к загруженным данным.Поскольку вы не хотите вносить какие-либо изменения в базу данных, я не вижу причин, почему этого было бы недостаточно.

Обратите внимание, что session.expire_all () вызывается после session.commit(), поэтому я бы рекомендовал заменить session.commit() на session.expire_all() или быть осторожным, чтобы вызывать session.expire() во всех случаяхВы хотите обновить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...