SQLAlchemy 2.0 文档
SQLAlchemy Core
- SQL 语句和表达式 API
- 模式定义语言
- SQL 数据类型对象
- 引擎和连接使用
- Core API 基础知识
- 事件
- 运行时检查 API
- 核心异常¶
AmbiguousForeignKeysErrorArgumentErrorAwaitRequiredBase20DeprecationWarningCircularDependencyErrorCompileErrorConstraintColumnNotFoundErrorDBAPIErrorDataErrorDatabaseErrorDisconnectionErrorDontWrapMixinDuplicateColumnErrorHasDescriptionCodeIdentifierErrorIllegalStateChangeErrorIntegrityErrorInterfaceErrorInternalErrorInvalidRequestErrorInvalidatePoolErrorLegacyAPIWarningMissingGreenletMovedIn20WarningMultipleResultsFoundNoForeignKeysErrorNoInspectionAvailableNoReferenceErrorNoReferencedColumnErrorNoReferencedTableErrorNoResultFoundNoSuchColumnErrorNoSuchModuleErrorNoSuchTableErrorNotSupportedErrorObjectNotExecutableErrorOperationalErrorPendingRollbackErrorProgrammingErrorResourceClosedErrorSADeprecationWarningSAPendingDeprecationWarningSATestSuiteWarningSAWarningSQLAlchemyErrorStatementErrorTimeoutErrorUnboundExecutionErrorUnreflectableTableErrorUnsupportedCompilationError
- 核心内部
项目版本
- 上一页: 运行时检查 API
- 下一页: 核心内部
- 上一级: 首页
- 在此页中
- 核心异常
AmbiguousForeignKeysErrorArgumentErrorAwaitRequiredBase20DeprecationWarningCircularDependencyErrorCompileErrorConstraintColumnNotFoundErrorDBAPIErrorDataErrorDatabaseErrorDisconnectionErrorDontWrapMixinDuplicateColumnErrorHasDescriptionCodeIdentifierErrorIllegalStateChangeErrorIntegrityErrorInterfaceErrorInternalErrorInvalidRequestErrorInvalidatePoolErrorLegacyAPIWarningMissingGreenletMovedIn20WarningMultipleResultsFoundNoForeignKeysErrorNoInspectionAvailableNoReferenceErrorNoReferencedColumnErrorNoReferencedTableErrorNoResultFoundNoSuchColumnErrorNoSuchModuleErrorNoSuchTableErrorNotSupportedErrorObjectNotExecutableErrorOperationalErrorPendingRollbackErrorProgrammingErrorResourceClosedErrorSADeprecationWarningSAPendingDeprecationWarningSATestSuiteWarningSAWarningSQLAlchemyErrorStatementErrorTimeoutErrorUnboundExecutionErrorUnreflectableTableErrorUnsupportedCompilationError
核心异常¶
SQLAlchemy 使用的异常。
基本异常类是 SQLAlchemyError。由于 DBAPI 异常而引发的异常都是 DBAPIError 的子类。
- 异常 sqlalchemy.exc.AmbiguousForeignKeysError¶
当在两个 selectable 对象之间可以找到多个匹配的外键以进行连接时引发。
- 异常 sqlalchemy.exc.ArgumentError¶
当提供无效或冲突的函数参数时引发。
此错误通常对应于构造时状态错误。
- 异常 sqlalchemy.exc.AwaitRequired¶
如果异步 greenlet 生成在需要异步操作时没有等待异步操作,则会引发错误。
- 异常 sqlalchemy.exc.Base20DeprecationWarning¶
针对 SQLAlchemy 2.0 中明确弃用或遗留的 API 的使用而发出。
-
属性
sqlalchemy.exc.Base20DeprecationWarning.deprecated_since: str | None = '1.4'¶ 指示开始引发此弃用警告的版本
-
属性
- 异常 sqlalchemy.exc.CircularDependencyError¶
当检测到循环依赖时,由拓扑排序引发。
在以下两种情况下会发生此错误
在 Session 刷新操作中,如果两个对象相互依赖,则无法仅通过 INSERT 或 DELETE 语句插入或删除它们;将需要 UPDATE 来后关联或预取消关联其中一个外键约束值。在 指向自身的行 / 相互依赖的行 中描述的
post_update标志可以解决此循环。在
MetaData.sorted_tables操作中,两个ForeignKey或ForeignKeyConstraint对象相互引用。将use_alter=True标志应用于其中一个或两个,请参阅 通过 ALTER 创建/删除外键约束。
-
方法
sqlalchemy.exc.CircularDependencyError.__init__(message: str, cycles: Any, edges: Any, msg: str | None = None, code: str | None = None)¶
- 异常 sqlalchemy.exc.CompileError¶
在 SQL 编译期间发生错误时引发
- 异常 sqlalchemy.exc.ConstraintColumnNotFoundError¶
当约束引用表中不存在的字符串列名时引发。
2.0 版本新增。
- 异常 sqlalchemy.exc.DBAPIError¶
当数据库操作执行失败时引发。
包装底层数据库操作的 DB-API 引发的异常。标准 DB-API 异常类型的驱动程序特定实现由 SQLAlchemy 的
DBAPIError的匹配子类型包装(如果可能)。DB-API 的Error类型映射到 SQLAlchemy 中的DBAPIError,否则名称相同。请注意,不能保证不同的 DB-API 实现会针对任何给定的错误情况引发相同的异常类型。DBAPIError具有StatementError.statement和StatementError.params属性,这些属性在发出 SQL 语句的上下文中引发错误时,为语句的具体情况提供上下文。包装的异常对象在
StatementError.orig属性中可用。其类型和属性是 DB-API 实现特定的。-
方法
sqlalchemy.exc.DBAPIError.__init__(statement: str | None, params: _AnyExecuteParams | None, orig: BaseException, hide_parameters: bool = False, connection_invalidated: bool = False, code: str | None = None, ismulti: bool | None = None)¶
-
方法
- 异常 sqlalchemy.exc.DataError¶
包装 DB-API DataError。
类签名
class
sqlalchemy.exc.DataError(sqlalchemy.exc.DatabaseError)
- 异常 sqlalchemy.exc.DatabaseError¶
包装 DB-API DatabaseError。
- 异常 sqlalchemy.exc.DisconnectionError¶
在原始 DB-API 连接上检测到断开连接。
此错误由连接池在内部引发和使用。
PoolEvents.checkout()事件可以引发此错误,以便主机池强制重试;在池放弃并引发关于连接尝试的InvalidRequestError之前,该异常将被捕获三次。
| 对象名称 | 描述 |
|---|---|
一个混入类,当应用于用户定义的异常类时,如果错误在执行语句的过程中发出,则不会包装在 |
|
helper,它添加 ‘code’ 作为属性,并添加 ‘_code_str’ 作为方法 |
- 类 sqlalchemy.exc.DontWrapMixin¶
一个混入类,当应用于用户定义的异常类时,如果错误在执行语句的过程中发出,则不会包装在
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!")
- 异常 sqlalchemy.exc.DuplicateColumnError¶
正在将 Column 添加到 Table,这将替换另一个 Column,但没有适当的参数来允许就地替换。
2.0.0b4 版本新增。
- 类 sqlalchemy.exc.HasDescriptionCode¶
helper,它添加 ‘code’ 作为属性,并添加 ‘_code_str’ 作为方法
- 异常 sqlalchemy.exc.IdentifierError¶
当模式名称超出最大字符限制时引发
- 异常 sqlalchemy.exc.IllegalStateChangeError¶
跟踪状态的对象遇到某种非法状态更改。
2.0 版本新增。
- 异常 sqlalchemy.exc.IntegrityError¶
包装 DB-API IntegrityError。
- 异常 sqlalchemy.exc.InterfaceError¶
包装 DB-API InterfaceError。
- 异常 sqlalchemy.exc.InternalError¶
包装 DB-API InternalError。
- 异常 sqlalchemy.exc.InvalidRequestError¶
SQLAlchemy 被要求做一些它无法做到的事情。
此错误通常对应于运行时状态错误。
- 异常 sqlalchemy.exc.InvalidatePoolError¶
当连接池应使所有过时连接失效时引发。
是
DisconnectionError的子类,指示连接上遇到的断开连接情况可能意味着整个池应失效,因为数据库已重新启动。此异常的处理方式与其他方面与
DisconnectionError相同,允许在放弃之前尝试重新连接三次。1.2 版本新增。
- 异常 sqlalchemy.exc.LegacyAPIWarning¶
指示处于 “遗留” 状态的 API,这是一个长期弃用。
- 异常 sqlalchemy.exc.MissingGreenlet¶
如果异步 greenlet await_ 在未在 greenlet 生成上下文中调用时引发错误。
- 异常 sqlalchemy.exc.MovedIn20Warning¶
RemovedIn20Warning 的子类型,用于指示仅移动的 API。
- 异常 sqlalchemy.exc.MultipleResultsFound¶
需要单个数据库结果,但找到了多个结果。
在 1.4 版本中更改: 此异常现在是 Core 中
sqlalchemy.exc模块的一部分,从 ORM 移动而来。该符号仍然可以从sqlalchemy.orm.exc导入。
- 异常 sqlalchemy.exc.NoForeignKeysError¶
当在两个 selectable 对象之间找不到外键以进行连接时引发。
- 异常 sqlalchemy.exc.NoInspectionAvailable¶
传递给
sqlalchemy.inspection.inspect()的主题没有产生用于检查的上下文。
- 异常 sqlalchemy.exc.NoReferenceError¶
由
ForeignKey引发,以指示无法解析引用。
- 异常 sqlalchemy.exc.NoReferencedColumnError¶
当无法找到引用的
Column时,由ForeignKey引发。-
方法
sqlalchemy.exc.NoReferencedColumnError.__init__(message: str, tname: str, cname: str)¶
-
方法
- 异常 sqlalchemy.exc.NoReferencedTableError¶
当无法找到引用的
Table时,由ForeignKey引发。-
method
sqlalchemy.exc.NoReferencedTableError.__init__(message: str, tname: str)¶
-
method
- exception sqlalchemy.exc.NoResultFound¶
需要数据库结果,但未找到。
在 1.4 版本中更改: 此异常现在是 Core 中
sqlalchemy.exc模块的一部分,从 ORM 移动而来。该符号仍然可以从sqlalchemy.orm.exc导入。
- exception sqlalchemy.exc.NoSuchColumnError¶
从
Row请求了不存在的列。类签名
class
sqlalchemy.exc.NoSuchColumnError(sqlalchemy.exc.InvalidRequestError,builtins.KeyError)
- 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 而发出。
类签名
class
sqlalchemy.exc.SADeprecationWarning(sqlalchemy.exc.HasDescriptionCode,builtins.DeprecationWarning)-
attribute
sqlalchemy.exc.SADeprecationWarning.deprecated_since: str | None = None¶ 指示开始引发此弃用警告的版本
-
attribute
- exception sqlalchemy.exc.SAPendingDeprecationWarning¶
与
SADeprecationWarning类似的警告,此警告在现代版本的 SQLAlchemy 中未使用。类签名
class
sqlalchemy.exc.SAPendingDeprecationWarning(builtins.PendingDeprecationWarning)-
attribute
sqlalchemy.exc.SAPendingDeprecationWarning.deprecated_since: str | None = None¶ 指示开始引发此弃用警告的版本
-
attribute
- exception sqlalchemy.exc.SATestSuiteWarning¶
在测试期间检测到的非致命条件的警告
目前在 SAWarning 之外,以便我们可以解决像 Alembic 这样的工具对警告处理不当的问题。
类签名
class
sqlalchemy.exc.SATestSuiteWarning(builtins.Warning)
- exception sqlalchemy.exc.SAWarning¶
在运行时发出。
类签名
class
sqlalchemy.exc.SAWarning(sqlalchemy.exc.HasDescriptionCode,builtins.RuntimeWarning)
- exception sqlalchemy.exc.SQLAlchemyError¶
通用错误类。
类签名
class
sqlalchemy.exc.SQLAlchemyError(sqlalchemy.exc.HasDescriptionCode,builtins.Exception)
- exception sqlalchemy.exc.StatementError¶
执行 SQL 语句期间发生错误。
StatementError包装了执行期间引发的异常,并具有statement和params属性,这些属性提供了有关出现问题的语句的具体上下文。包装的异常对象在
orig属性中可用。-
method
sqlalchemy.exc.StatementError.__init__(message: str, statement: str | None, params: _AnyExecuteParams | None, orig: BaseException | None, hide_parameters: bool = False, code: str | None = None, ismulti: bool | None = None)¶
-
attribute
sqlalchemy.exc.StatementError.ismulti: bool | None = None¶ 传递给 repr_params() 的 multi 参数。None 是有意义的。
-
attribute
sqlalchemy.exc.StatementError.orig: BaseException | None = None¶ 抛出的原始异常。
-
attribute
sqlalchemy.exc.StatementError.params: _AnyExecuteParams | None = None¶ 发生此异常时正在使用的参数列表。
-
attribute
sqlalchemy.exc.StatementError.statement: str | None = None¶ 发生此异常时正在调用的字符串 SQL 语句。
-
method
- exception sqlalchemy.exc.TimeoutError¶
当连接池在获取连接时超时引发。
- exception sqlalchemy.exc.UnboundExecutionError¶
尝试执行 SQL,但没有数据库连接。
- exception sqlalchemy.exc.UnreflectableTableError¶
表存在,但由于某些原因无法反射。
1.2 版本新增。
- exception sqlalchemy.exc.UnsupportedCompilationError¶
当给定编译器不支持操作时引发。
-
method
sqlalchemy.exc.UnsupportedCompilationError.__init__(compiler: Compiled | TypeCompiler, element_type: Type[ClauseElement], message: str | None = None)¶
-
method
flambé! 龙和 The Alchemist 图像设计由 Rotem Yaari 创作并慷慨捐赠。
使用 Sphinx 7.2.6 创建。文档最后生成时间:Tue 11 Mar 2025 02:40:17 PM EDT