@LakeForest

Как правильно предотравщать ошибки, приводящие к PendingRollbackError, с SQLAlchemy?

Насколько я знаю писать "except Exception as e:" - плохой тон, но как иначе отловить всё, что может привести к ошибке и PendingRollbackError?

A transaction has failed and needs to be rolled back before continuing.

Но у меня она вылетает, только если после первой ошибки я не сделал откат, тогда появится PendingRollbackError. Подскажите, в чем я ошибаюсь? Если выставить отлов только PendingRollbackError, должно сработать на любые ошибки, требующие отката (даже те, которые пока не пишут PendingRollbackError)?

Но на практике, я откат делаю только со 2ого раза по первой ошибке, тк не сделал откат.
try:
        db_result = Results(
            text=text,
            created_at=created_at,
            finished_at=finished_at
        )

        db_session.add(db_result)
        db_session.commit()
        db_session.refresh(db_result)
    except (
        PendingRollbackError
    ) as e:
        logging.error(e)
        try:
            db_session.rollback()
        except Exception as err:
            logging.error(err)
  • Вопрос задан
  • 243 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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