@beduin01

Как сделать rollback транзакции?

Предположим у меня запрос не сработал, как сделать rollback? tr же у меня в цикле идет.
tr_list = []
try:
	for tr in ready_query.all():
		tr_list.append(tr.asdict(follow=follow_list, exclude=exclude_columns))
except SQLAlchemyError as e:
	# как сделать rollback ?
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ответы на вопрос 1
@techkuz
rollback нужен, если у вас происходят изменения данных в БД на момент падения. В вашем коде в for loop идёт вставка элементов в лист (без связки с БД). Если и выпадет исключение SQLalchemy, то на момент выполнения all(), при получении элементов. Но тогда и rollback делать не на что будет, т.к. вы сами никаких изменений (другими словами set операций) не производите, только get.

Если вы хотите rollback, чтобы вернуть хоть часть элементов из all() запроса, то не получится, т.к. этот get выполняется один раз и возвращается сразу все элементы, поэтому он или завершится успешно, или упадёт с исключением (в случае последнего откатываться (=rollback) будет, опять же, некуда)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы