2012-01-15 12 views
16

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 

Respuesta