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
Entendue. Donc, je devrais écrire "session.rollback()" ** explicitement ** dans l'instruction d'exception. Merci beaucoup. – fbessho
Le lien n'est pas cassé, mais la section n'existe plus ... – fedorqui
Lien brisé ...! –