Основные исключения¶
Исключения, используемые в 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 обертываются соответствующими подтипами
DBAPIError
SQLAlchemy, когда это возможно. Тип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