отлов исключений SQLAlchemy - PullRequest
       8

отлов исключений SQLAlchemy

36 голосов
/ 03 февраля 2010

Что такое исключение верхнего уровня, с которым можно перехватывать исключения 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__']
>>> 

Ответы [ 3 ]

49 голосов
/ 13 декабря 2010

Чтобы поймать любое исключение, выбрасывает SQLAlchemy:

from sqlalchemy import exc
db.add(user)
try:
  db.commit()
except exc.SQLAlchemyError:
  pass # do something intelligent here

См. Help (sqlalchemy.exc) и help (sqlalchemy.orm.exc) для списка возможных исключений, которые может вызвать sqlalchemy.

38 голосов
/ 03 февраля 2010

Из источника :

Базовый класс исключений SQLAlchemyError.

2 голосов
/ 19 июня 2015

В зависимости от вашей версии SQLAlchemy (например, 1.0.4) вам может потребоваться сделать немного больше, чтобы добраться до базового класса 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!")

это потому, что sqlalchemy.orm.exc теперь имеет строфу:

"""SQLAlchemy ORM exceptions."""
from .. import exc as sa_exc, util
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...