2012-01-15 21 views
16

Ho ricevuto un errore nel modo seguente nel mio codice di python (che raccoglie gli stati di Twitter e memorizza nel database).SQLAlchemy Errore di rollback annidato

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. 

Voglio sapere qual è il problema, perché si verifica e come posso risolverlo.

Non ho idea di nested rollback. C'è un semplice esempio che si verifica nested rollback?


EDIT: Il problema è stato risolto. Il punto in questo caso è che il rollback non viene eseguito finché non richiamiamo il rollback in modo esplicito, quindi quando includiamo commit(), dovremmo scriverlo in una dichiarazione try e scrivere rollback() nell'istruzione exception (nella maggior parte dei casi) come scritto in http://www.sqlalchemy.org/trac/wiki/FAQ#Thetransactionisinactiveduetoarollbackinasubtransaction

E, ecco l'esempio di codice corretto. Ho citato questo dal link qui sopra.

try: 
    <use session> 
    session.commit() 
except: 
    session.rollback() 
    raise 
finally: 
    session.close() # optional, depends on use case 

risposta

Problemi correlati