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