Почему я получаю вложенную ошибку отката SQLAlchemy? - PullRequest
28 голосов
/ 15 января 2012

Я получил ошибку в моем коде python (который собирает статусы твиттера и сохраняет его в базе данных).

sqlalchemy.exc.InvalidRequestError: This Session's transaction has been rolled back by a nested rollback() call.  To begin a new transaction, issue Session.rollback() first.

Я хочу знать, в чем проблема, почему она возникает и как ее решить.

Понятия не имею о nested rollback. Есть ли простой пример, который встречается nested rollback?

1 Ответ

1 голос
/ 25 мая 2019

Проблема была решена. Дело в том, что в этом случае откат не выполняется до тех пор, пока мы не вызовем откат явно, поэтому, когда мы включаем commit(), мы должны записать его в оператор try и написать rollback() в оператор исключения (в большинстве случаев) как написано в http://www.sqlalchemy.org/trac/wiki/FAQ#Thetransactionisinactiveduetoarollbackinasubtransaction

И, вот правильный пример кода. Я цитировал это по ссылке выше.

try:
    <use session>
    session.commit()
except:
    session.rollback()
    raise
finally:
    session.close()  # optional, depends on use case
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...