Почему я получаю вложенную ошибку отката SQLAlchemy? - программирование
Подтвердить что ты не робот

Почему я получаю вложенную ошибку отката SQLAlchemy?

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

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

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

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

4b9b3361

Ответ 2

Проблема была решена. Дело в том, что в этом случае откат не выполняется до тех пор, пока мы не вызовем откат явным образом, поэтому, когда мы включаем 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