2012-01-15 3 views
16

J'ai reçu une erreur comme suit dans mon code de python (qui recueille les états de twitter et stocke dans la base de données).SQLAlchemy Erreur de restauration imbriquée

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. 

Je veux savoir quel est le problème, pourquoi cela se produit et comment puis-je le résoudre. Je n'ai aucune idée de nested rollback. Y at-il un exemple simple qui se produit nested rollback?


EDIT: Le problème a été résolu. Le point dans ce cas est que rollback n'est pas exécuté jusqu'à ce que nous appelions rollback explicitement, donc quand nous incluons commit(), nous devrions l'écrire dans une instruction try, et écrire rollback() dans l'instruction d'exception (dans la plupart des cas) comme écrit en http://www.sqlalchemy.org/trac/wiki/FAQ#Thetransactionisinactiveduetoarollbackinasubtransaction

Et, voici l'exemple de code correct. Je l'ai cité du lien ci-dessus.

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

Répondre

Questions connexes