python - how - sqlalchemy for dummies
capturando excepciones de SQLAlchemy (3)
¿Cuál es la excepción de nivel superior con la que puedo capturar excepciones de 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 fuente :
La clase de excepción base es
SQLAlchemyError
.
Dependiendo de su versión de SQLAlchemy (ej. 1.0.4), puede necesitar hacer un poco más para llegar a la clase 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!")
esto es porque sqlalchemy.orm.exc
ahora tiene la estrofa:
"""SQLAlchemy ORM exceptions."""
from .. import exc as sa_exc, util
Para atrapar cualquier excepción, lanza SQLAlchemy:
from sqlalchemy import exc
db.add(user)
try:
db.commit()
except exc.SQLAlchemyError:
pass # do something intelligent here
Consulte ayuda (sqlalchemy.exc) y ayuda (sqlalchemy.orm.exc) para obtener una lista de posibles excepciones que sqlalchemy puede generar.