77 Stimmen

SQLAlchemy-Ausnahmen abfangen

Was ist die obere Ebene Ausnahme, die ich SQLAlechmy Ausnahmen mit abfangen kann?

>>> 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__']
>>>

107voto

bbrame Punkte 16434

Um jede Ausnahme abzufangen, die SQLAlchemy auslöst:

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

Siehe help(sqlalchemy.exc) und help(sqlalchemy.orm.exc) für eine Liste der möglichen Ausnahmen, die sqlalchemy auslösen kann.

81voto

stephan Punkte 9774

De die Quelle :

Die Basis-Ausnahmeklasse ist SQLAlchemyError .

8voto

Je nach Ihrer Version von SQLAlchemy (z. B. 1.0.4) müssen Sie möglicherweise etwas mehr tun, um zur Basis- SQLAlchemyError Klasse:

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!")

Dies liegt daran, dass sqlalchemy.orm.exc hat jetzt die Strophe:

"""SQLAlchemy ORM exceptions."""
from .. import exc as sa_exc, util

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X