Quelle est l'exception de niveau supérieur avec laquelle je peux intercepter les exceptions SQLAlechmy?
>>> from sqlalchemy import exc
>>> dir(exc)
['ArgumentError', 'CircularDependencyError', 'CompileError', 'ConcurrentModificationError', 'DBAPIError', 'DataError', 'DatabaseError', 'DisconnectionError', 'FlushError', 'IdentifierError', 'IntegrityError', 'InterfaceError', 'InternalError', 'InvalidRequestError', 'NoReferenceError', 'NoReferencedColumnError', 'NoReferencedTableError', 'NoSuchColumnError', 'NoSuchTableError', 'NotSupportedError', 'OperationalError', 'ProgrammingError', 'SADeprecationWarning', 'SAPendingDeprecationWarning', 'SAWarning', 'SQLAlchemyError', 'SQLError', 'TimeoutError', 'UnboundExecutionError', 'UnmappedColumnError', '__builtins__', '__doc__', '__file__', '__name__', '__package__']
>>>
De la source :
La classe d'exception de base est
SQLAlchemyError
.
Pour intercepter toute exception lancée par SQLAlchemy:
from sqlalchemy import exc
db.add(user)
try:
db.commit()
except exc.SQLAlchemyError:
pass # do something intelligent here
Voir l'aide (sqlalchemy.exc) et l'aide (sqlalchemy.orm.exc) pour une liste des exceptions possibles que sqlalchemy peut déclencher.
Selon votre version de SQLAlchemy (par exemple 1.0.4), vous devrez peut-être en faire un peu plus pour accéder à la classe base -SQLAlchemyError
:
from flask.ext.sqlalchemy import exc
exceptions = exc.sa_exc
try:
my_admin = user_models.User('space cadet', active=True)
db.session.add(my_admin)
db.session.commit()
except exceptions.SQLAlchemyError:
sys.exit("Encountered general SQLAlchemyError. Call an adult!")
ceci est dû au fait sqlalchemy.orm.exc
a maintenant la strophe:
"""SQLAlchemy ORM exceptions."""
from .. import exc as sa_exc, util