practices how for example dummies best auth and python sqlalchemy exception

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.