Obtuve un error de la siguiente manera en mi código de python (que recopila estados de twitter y almacena en la base de datos).SQLAlchemy Error de reversión anidado
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.
Quiero saber cuál es el problema, por qué ocurre y cómo puedo solucionarlo.
No tengo idea sobre nested rollback
. ¿Hay algún ejemplo simple que ocurra nested rollback
?
EDITAR: El problema se resolvió. El punto en este caso es que la reversión no se ejecuta hasta que callback explícitamente, así que cuando incluimos commit()
, debemos escribirlo en una instrucción try y escribir rollback()
en la declaración de excepción (en la mayoría de los casos) como está escrito en http://www.sqlalchemy.org/trac/wiki/FAQ#Thetransactionisinactiveduetoarollbackinasubtransaction
Y, aquí está el ejemplo de código correcto. Cité esto del enlace de arriba.
try:
<use session>
session.commit()
except:
session.rollback()
raise
finally:
session.close() # optional, depends on use case
Entendido. Entonces, debería escribir "session.rollback()" ** explícitamente ** en la declaración de excepción. Muchas gracias. – fbessho
El enlace no está roto, pero la sección ya no existe ... – fedorqui
Enlace roto ...! –