Основные исключения¶
Исключения, используемые в SQLAlchemy.
Базовым классом исключений является SQLAlchemyError. Исключения, возникающие в результате исключений DBAPI, являются подклассами DBAPIError.
- exception sqlalchemy.exc.AmbiguousForeignKeysError¶
Возникает, когда между двумя selectables во время объединения может находиться более одного совпадения внешнего ключа.
- exception sqlalchemy.exc.ArgumentError¶
Возникает при предоставлении недопустимого или противоречивого аргумента функции.
Эта ошибка обычно соответствует ошибкам состояния времени строительства.
- exception sqlalchemy.exc.AwaitRequired¶
Ошибка, вызванная асинхронным гринлетом spawn, если не было ожиданий асинхронной операции, когда она требовалась.
- exception sqlalchemy.exc.Base20DeprecationWarning¶
Выдается для использования API, специально устаревших или унаследованных в SQLAlchemy 2.0.
-
attribute
sqlalchemy.exc.Base20DeprecationWarning.deprecated_since: Optional[str] = '1.4'¶ Указывает версию, в которой начало появляться это предупреждение об устаревании
-
attribute
- exception sqlalchemy.exc.CircularDependencyError¶
Возникает в топологических сортировках при обнаружении круговой зависимости.
Существует два сценария возникновения этой ошибки:
В операции Session flush, если два объекта взаимно зависимы друг от друга, они не могут быть вставлены или удалены только с помощью операторов INSERT или DELETE; потребуется UPDATE для пост-ассоциации или пре-деассоциации одного из значений, ограниченных внешним ключом. Флаг
post_update, описанный в Строки, указывающие сами на себя / Взаимозависимые строки, может разрешить этот цикл.В операции
MetaData.sorted_tablesдва объектаForeignKeyилиForeignKeyConstraintвзаимно ссылаются друг на друга. Примените флагuse_alter=Trueк одному или обоим, см. раздел Создание/удаление ограничений внешних ключей с помощью ALTER.
-
method
sqlalchemy.exc.CircularDependencyError.__init__(message: str, cycles: Any, edges: Any, msg: Optional[str] = None, code: Optional[str] = None)¶
- exception sqlalchemy.exc.CompileError¶
Возникает при возникновении ошибки во время компиляции SQL
- exception sqlalchemy.exc.ConstraintColumnNotFoundError¶
возникает, когда ограничение ссылается на строковое имя столбца, которого нет в таблице, на которую накладывается ограничение.
Добавлено в версии 2.0.
- exception sqlalchemy.exc.DBAPIError¶
Возникает при неудачном выполнении операции с базой данных.
Обертывает исключения, вызванные DB-API, лежащим в основе операции с базой данных. Специфические для драйвера реализации стандартных типов исключений DB-API обертываются соответствующими подтипами
DBAPIErrorSQLAlchemy, когда это возможно. ТипErrorв DB-API соответствуетDBAPIErrorв SQLAlchemy, в остальном имена идентичны. Обратите внимание, что нет гарантии, что различные реализации DB-API будут вызывать один и тот же тип исключения для любого заданного состояния ошибки.DBAPIErrorимеет атрибутыStatementError.statementиStatementError.params, которые предоставляют контекст относительно специфики оператора, в котором возникла проблема, для типичного случая, когда ошибка возникла в контексте выполнения SQL-оператора.Обернутый объект исключения доступен в атрибуте
StatementError.orig. Его тип и свойства зависят от реализации DB-API.-
method
sqlalchemy.exc.DBAPIError.__init__(statement: Optional[str], params: Optional[_AnyExecuteParams], orig: BaseException, hide_parameters: bool = False, connection_invalidated: bool = False, code: Optional[str] = None, ismulti: Optional[bool] = None)¶
-
method
- exception sqlalchemy.exc.DataError¶
Обертывает ошибку DB-API DataError.
- exception sqlalchemy.exc.DatabaseError¶
Обертывает ошибку DB-API DatabaseError.
- exception sqlalchemy.exc.DisconnectionError¶
Обнаружено разъединение на необработанном соединении DB-API.
Эта ошибка возникает и потребляется внутри пула соединений. Она может быть вызвана событием
PoolEvents.checkout(), чтобы пул хоста заставил повторить попытку; исключение будет поймано три раза подряд, прежде чем пул сдастся и вызоветInvalidRequestErrorотносительно попытки соединения.
| Object Name | Description |
|---|---|
Класс-миксин, который, будучи примененным к пользовательскому классу Exception, не будет обернут внутрь |
|
помощник, который добавляет „code“ в качестве атрибута и „_code_str“ в качестве метода |
- class sqlalchemy.exc.DontWrapMixin¶
Класс-миксин, который, будучи примененным к пользовательскому классу Exception, не будет обернут внутрь
StatementError, если ошибка выдается в процессе выполнения оператора.Например:
from sqlalchemy.exc import DontWrapMixin class MyCustomException(Exception, DontWrapMixin): pass class MySpecialType(TypeDecorator): impl = String def process_bind_param(self, value, dialect): if value == 'invalid': raise MyCustomException("invalid!")
- exception sqlalchemy.exc.DuplicateColumnError¶
в таблицу добавляется колонка, которая заменяет другую колонку, без соответствующих параметров, позволяющих это сделать.
Добавлено в версии 2.0.0b4.
- class sqlalchemy.exc.HasDescriptionCode¶
помощник, который добавляет „code“ в качестве атрибута и „_code_str“ в качестве метода
- exception sqlalchemy.exc.IdentifierError¶
Возникает, когда имя схемы превышает максимальный лимит символов
- exception sqlalchemy.exc.IllegalStateChangeError¶
Объект, отслеживающий состояние, столкнулся с каким-либо незаконным изменением состояния.
Добавлено в версии 2.0.
- exception sqlalchemy.exc.IntegrityError¶
Обертывает ошибку целостности DB-API IntegrityError.
- exception sqlalchemy.exc.InterfaceError¶
Обертывает ошибку DB-API InterfaceError.
- exception sqlalchemy.exc.InternalError¶
Обертывает ошибку DB-API InternalError.
- exception sqlalchemy.exc.InvalidRequestError¶
SQLAlchemy попросили сделать то, что она не может сделать.
Эта ошибка обычно соответствует ошибкам состояния во время выполнения.
- exception sqlalchemy.exc.InvalidatePoolError¶
Возникает, когда пул соединений должен аннулировать все устаревшие соединения.
Подкласс
DisconnectionError, который указывает, что ситуация разъединения, возникшая при соединении, вероятно, означает, что весь пул должен быть аннулирован, поскольку база данных была перезапущена.Это исключение будет обработано так же, как и
DisconnectionError, разрешая три попытки повторного подключения, прежде чем сдаться.Добавлено в версии 1.2.
- exception sqlalchemy.exc.LegacyAPIWarning¶
указывает на API, который находится в статусе «legacy» (устаревший), то есть давно устаревший.
- exception sqlalchemy.exc.MissingGreenlet¶
Ошибка, вызванная асинхронным гринлетом await_, если вызов происходит не внутри контекста гринлета spawn.
- exception sqlalchemy.exc.MovedIn20Warning¶
Подтип RemovedIn20Warning для указания API, который только переместился.
- exception sqlalchemy.exc.MultipleResultsFound¶
Требовался один результат базы данных, но было найдено более одного.
Изменено в версии 1.4: Это исключение теперь является частью модуля
sqlalchemy.excв Core, перенесенного из ORM. Символ остается импортируемым изsqlalchemy.orm.exc.
- exception sqlalchemy.exc.NoForeignKeysError¶
Возникает, когда между двумя selectables во время объединения не может быть внешних ключей.
- exception sqlalchemy.exc.NoInspectionAvailable¶
Предмет, переданный в
sqlalchemy.inspection.inspect(), не дает никакого контекста для проверки.
- exception sqlalchemy.exc.NoReferenceError¶
Вызывается командой
ForeignKeyдля указания на то, что ссылка не может быть разрешена.
- exception sqlalchemy.exc.NoReferencedColumnError¶
Вызывается
ForeignKey, когда связанныйColumnне может быть найден.-
method
sqlalchemy.exc.NoReferencedColumnError.__init__(message: str, tname: str, cname: str)¶
-
method
- exception sqlalchemy.exc.NoReferencedTableError¶
Вызывается
ForeignKey, когда связанныйTableне может быть найден.-
method
sqlalchemy.exc.NoReferencedTableError.__init__(message: str, tname: str)¶
-
method
- exception sqlalchemy.exc.NoResultFound¶
Требовалось получить результат из базы данных, но он не был найден.
Изменено в версии 1.4: Это исключение теперь является частью модуля
sqlalchemy.excв Core, перенесенного из ORM. Символ остается импортируемым изsqlalchemy.orm.exc.
- exception sqlalchemy.exc.NoSuchColumnError¶
Несуществующий столбец запрашивается из
Row.
- exception sqlalchemy.exc.NoSuchModuleError¶
Возникает, когда динамически загружаемый модуль (обычно диалект базы данных) с определенным именем не может быть найден.
- exception sqlalchemy.exc.NoSuchTableError¶
Таблица не существует или не видна для соединения.
- exception sqlalchemy.exc.NotSupportedError¶
Обертывает ошибку DB-API NotSupportedError.
- exception sqlalchemy.exc.ObjectNotExecutableError¶
Возникает, когда в .execute() передается объект, который не может быть выполнен как SQL.
-
method
sqlalchemy.exc.ObjectNotExecutableError.__init__(target: Any)¶
-
method
- exception sqlalchemy.exc.OperationalError¶
Обертывает ошибку DB-API OperationalError.
- exception sqlalchemy.exc.PendingRollbackError¶
Транзакция завершилась неудачно и должна быть откатана перед продолжением.
Добавлено в версии 1.4.
- exception sqlalchemy.exc.ProgrammingError¶
Обертывает ошибку программирования DB-API ProgrammingError.
- exception sqlalchemy.exc.ResourceClosedError¶
Операция была запрошена у соединения, курсора или другого объекта, который находится в закрытом состоянии.
- exception sqlalchemy.exc.SADeprecationWarning¶
Выдается за использование устаревших API.
-
attribute
sqlalchemy.exc.SADeprecationWarning.deprecated_since: Optional[str] = None¶ Указывает версию, в которой начало появляться это предупреждение об устаревании
-
attribute
- exception sqlalchemy.exc.SAPendingDeprecationWarning¶
Аналогичное предупреждению
SADeprecationWarning, это предупреждение не используется в современных версиях SQLAlchemy.-
attribute
sqlalchemy.exc.SAPendingDeprecationWarning.deprecated_since: Optional[str] = None¶ Указывает версию, в которой начало появляться это предупреждение об устаревании
-
attribute
- exception sqlalchemy.exc.SATestSuiteWarning¶
предупреждение о состоянии, обнаруженном во время тестирования, которое не является фатальным
В настоящее время находится вне SAWarning, чтобы мы могли обойти такие инструменты, как Alembic, которые делают неправильные вещи с предупреждениями.
- exception sqlalchemy.exc.SAWarning¶
Выдается во время выполнения.
- exception sqlalchemy.exc.SQLAlchemyError¶
Общий класс ошибок.
- exception sqlalchemy.exc.StatementError¶
Во время выполнения оператора SQL произошла ошибка.
StatementErrorоборачивает исключение, возникшее во время выполнения, и имеет атрибутыstatementиparams, которые предоставляют контекст относительно специфики оператора, в котором возникла проблема.Обернутый объект исключения доступен в атрибуте
orig.-
method
sqlalchemy.exc.StatementError.__init__(message: str, statement: Optional[str], params: Optional[_AnyExecuteParams], orig: Optional[BaseException], hide_parameters: bool = False, code: Optional[str] = None, ismulti: Optional[bool] = None)¶
-
attribute
sqlalchemy.exc.StatementError.ismulti: Optional[bool] = None¶ мультипараметр, передаваемый в repr_params(). Ни один не имеет значения.
-
attribute
sqlalchemy.exc.StatementError.orig: Optional[BaseException] = None¶ Первоначальное исключение, которое было брошено.
-
attribute
sqlalchemy.exc.StatementError.params: Optional[_AnyExecuteParams] = None¶ Список параметров, используемый в момент возникновения данного исключения.
-
attribute
sqlalchemy.exc.StatementError.statement: Optional[str] = None¶ Строковый SQL-оператор, который был вызван, когда возникло это исключение.
-
method
- exception sqlalchemy.exc.TimeoutError¶
Возникает, когда пул соединений задерживается при получении соединения.
- exception sqlalchemy.exc.UnboundExecutionError¶
Была предпринята попытка SQL без соединения с базой данных для выполнения.
- exception sqlalchemy.exc.UnreflectableTableError¶
Таблица существует, но по какой-то причине не может быть отражена.
Добавлено в версии 1.2.
- exception sqlalchemy.exc.UnsupportedCompilationError¶
Возникает, когда операция не поддерживается данным компилятором.
См.также
Как отобразить SQL-выражения в виде строк, возможно, с вставкой связанных параметров?
Компилятор StrSQLCompiler не может вывести элемент типа <тип элемента>
-
method
sqlalchemy.exc.UnsupportedCompilationError.__init__(compiler: Union[Compiled, TypeCompiler], element_type: Type[ClauseElement], message: Optional[str] = None)¶
-
method