SqlAlchemy 2.0 中文文档(四十七)(3)

简介: SqlAlchemy 2.0 中文文档(四十七)

SqlAlchemy 2.0 中文文档(四十七)(2)https://developer.aliyun.com/article/1563046


类签名

sqlalchemy.exc.IntegrityErrorsqlalchemy.exc.DatabaseError

exception sqlalchemy.exc.InterfaceError

包装了一个 DB-API InterfaceError。

类签名

sqlalchemy.exc.InterfaceErrorsqlalchemy.exc.DBAPIError

exception sqlalchemy.exc.InternalError

包装了一个 DB-API InternalError。

类签名

sqlalchemy.exc.InternalErrorsqlalchemy.exc.DatabaseError)

exception sqlalchemy.exc.InvalidRequestError

SQLAlchemy 被要求执行一些它无法执行的操作。

此错误通常对应于运行时状态错误。

类签名

sqlalchemy.exc.InvalidRequestErrorsqlalchemy.exc.SQLAlchemyError

exception sqlalchemy.exc.InvalidatePoolError

当连接池应该使所有陈旧连接无效时引发。

一个DisconnectionError的子类,表示在连接上遇到的断开情况可能意味着整个池应该无效,因为数据库已重新启动。

此异常将以与DisconnectionError相同的方式处理,允许在放弃之前尝试三次重新连接。

1.2 版本中的新功能。

类签名

sqlalchemy.exc.InvalidatePoolErrorsqlalchemy.exc.DisconnectionError

exception sqlalchemy.exc.LegacyAPIWarning

表示处于“遗留”状态的 API,长期弃用。

类签名

sqlalchemy.exc.LegacyAPIWarningsqlalchemy.exc.Base20DeprecationWarning

exception sqlalchemy.exc.MissingGreenlet

如果在不在 greenlet spawn 上下文中调用 async greenlet await_ 时引发的错误。

类签名

sqlalchemy.exc.MissingGreenletsqlalchemy.exc.InvalidRequestError

exception sqlalchemy.exc.MovedIn20Warning

用于指示仅移动的 API 的 RemovedIn20Warning 子类型。

类签名

class sqlalchemy.exc.MovedIn20Warning (sqlalchemy.exc.Base20DeprecationWarning)

exception sqlalchemy.exc.MultipleResultsFound

需要单个数据库结果,但找到多个结果。

从版本 1.4 开始更改:此异常现在是 Core 中sqlalchemy.exc模块的一部分,已从 ORM 中移动。该符号仍然可以从sqlalchemy.orm.exc中导入。

类签名

class sqlalchemy.exc.MultipleResultsFound (sqlalchemy.exc.InvalidRequestError)

exception sqlalchemy.exc.NoForeignKeysError

在连接期间无法找到两个可选择对象之间的外键时引发。

类签名

class sqlalchemy.exc.NoForeignKeysError (sqlalchemy.exc.ArgumentError)

exception sqlalchemy.exc.NoInspectionAvailable

传递给sqlalchemy.inspection.inspect()的主题未产生检查的上下文。

类签名

class sqlalchemy.exc.NoInspectionAvailable (sqlalchemy.exc.InvalidRequestError)

exception sqlalchemy.exc.NoReferenceError

ForeignKey引发,表示无法解析引用。

类签名

class sqlalchemy.exc.NoReferenceError (sqlalchemy.exc.InvalidRequestError)

exception sqlalchemy.exc.NoReferencedColumnError

当所引用的Column无法找到时,由ForeignKey引发。

类签名

class sqlalchemy.exc.NoReferencedColumnError (sqlalchemy.exc.NoReferenceError)

method __init__(message: str, tname: str, cname: str)
exception sqlalchemy.exc.NoReferencedTableError

当所引用的Table无法找到时,由ForeignKey引发。

类签名

class sqlalchemy.exc.NoReferencedTableError (sqlalchemy.exc.NoReferenceError)

method __init__(message: str, tname: str)
exception sqlalchemy.exc.NoResultFound

需要数据库结果,但未找到任何结果。

从版本 1.4 开始更改:此异常现在是 Core 中sqlalchemy.exc模块的一部分,已从 ORM 中移动。该符号仍然可以从sqlalchemy.orm.exc中导入。

类签名

class sqlalchemy.exc.NoResultFound (sqlalchemy.exc.InvalidRequestError)

exception sqlalchemy.exc.NoSuchColumnError

请求了Row中不存在的列。

类签名

sqlalchemy.exc.NoSuchColumnError (sqlalchemy.exc.InvalidRequestError, builtins.KeyError)

exception sqlalchemy.exc.NoSuchModuleError

当找不到特定名称的动态加载模块(通常是数据库方言)时引发。

类签名

sqlalchemy.exc.NoSuchModuleError (sqlalchemy.exc.ArgumentError)

exception sqlalchemy.exc.NoSuchTableError

表不存在或对连接不可见。

类签名

sqlalchemy.exc.NoSuchTableError (sqlalchemy.exc.InvalidRequestError)

exception sqlalchemy.exc.NotSupportedError

封装了一个 DB-API NotSupportedError。

类签名

sqlalchemy.exc.NotSupportedError (sqlalchemy.exc.DatabaseError)

exception sqlalchemy.exc.ObjectNotExecutableError

当传递给 .execute() 的对象无法作为 SQL 执行时引发。

类签名

sqlalchemy.exc.ObjectNotExecutableError (sqlalchemy.exc.ArgumentError)

method __init__(target: Any)
exception sqlalchemy.exc.OperationalError

封装了一个 DB-API OperationalError。

类签名

sqlalchemy.exc.OperationalError (sqlalchemy.exc.DatabaseError)

exception sqlalchemy.exc.PendingRollbackError

事务失败,需要在继续之前回滚。

自版本 1.4 新增。

类签名

sqlalchemy.exc.PendingRollbackError (sqlalchemy.exc.InvalidRequestError)

exception sqlalchemy.exc.ProgrammingError

封装了一个 DB-API ProgrammingError。

类签名

sqlalchemy.exc.ProgrammingError (sqlalchemy.exc.DatabaseError)

exception sqlalchemy.exc.ResourceClosedError

从已关闭状态的连接、游标或其他对象请求了操作。

类签名

sqlalchemy.exc.ResourceClosedError (sqlalchemy.exc.InvalidRequestError)

exception sqlalchemy.exc.SADeprecationWarning

用于废弃的 API 的使用。

类签名

sqlalchemy.exc.SADeprecationWarningsqlalchemy.exc.HasDescriptionCodebuiltins.DeprecationWarning

attribute deprecated_since: str | None = None

表明开始引发此弃用警告的版本

exception sqlalchemy.exc.SAPendingDeprecationWarning

SADeprecationWarning类似的警告,此警告在现代版本的 SQLAlchemy 中不使用。

类签名

sqlalchemy.exc.SAPendingDeprecationWarningbuiltins.PendingDeprecationWarning

attribute deprecated_since: str | None = None

表明开始引发此弃用警告的版本

exception sqlalchemy.exc.SATestSuiteWarning

在测试期间检测到的非致命条件的警告

目前不在 SAWarning 之外,以便我们可以解决像 Alembic 这样的工具在警告方面做错事的问题。

类签名

sqlalchemy.exc.SATestSuiteWarningbuiltins.Warning

exception sqlalchemy.exc.SAWarning

在运行时发出。

类签名

sqlalchemy.exc.SAWarningsqlalchemy.exc.HasDescriptionCodebuiltins.RuntimeWarning

exception sqlalchemy.exc.SQLAlchemyError

通用错误类。

类签名

sqlalchemy.exc.SQLAlchemyErrorsqlalchemy.exc.HasDescriptionCodebuiltins.Exception

exception sqlalchemy.exc.StatementError

在执行 SQL 语句期间发生错误。

StatementError封装了执行过程中引发的异常,并具有statementparams属性,提供有关出现问题的语句的具体情况的上下文。

封装的异常对象可在orig属性中找到。

类签名

sqlalchemy.exc.StatementErrorsqlalchemy.exc.SQLAlchemyError

method __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 ismulti: bool | None = None

传递给repr_params()的多个参数。None是有意义的。

attribute orig: BaseException | None = None

被抛出的原始异常。

attribute params: _AnyExecuteParams | None = None

在发生此异常时使用的参数列表。

attribute statement: str | None = None

在发生此异常时调用的字符串 SQL 语句。

exception sqlalchemy.exc.TimeoutError

在连接池在获取连接时超时时引发。

类签名

sqlalchemy.exc.TimeoutError (sqlalchemy.exc.SQLAlchemyError)

exception sqlalchemy.exc.UnboundExecutionError

尝试执行 SQL 但没有数据库连接。

类签名

sqlalchemy.exc.UnboundExecutionError (sqlalchemy.exc.InvalidRequestError)

exception sqlalchemy.exc.UnreflectableTableError

表存在,但由于某种原因无法反映。

自 1.2 版本新增。

类签名

sqlalchemy.exc.UnreflectableTableError (sqlalchemy.exc.InvalidRequestError)

exception sqlalchemy.exc.UnsupportedCompilationError

当操作不受给定编译器支持时引发。

另请参见

如何将 SQL 表达式渲染为字符串,可能包含内联的绑定参数?

编译器 StrSQLCompiler 无法渲染类型为 的元素

类签名

sqlalchemy.exc.UnsupportedCompilationError (sqlalchemy.exc.CompileError)

method __init__(compiler: Compiled | TypeCompiler, element_type: Type[ClauseElement], message: str | None = None)

核心内部

原文:docs.sqlalchemy.org/en/20/core/internals.html

这里列出了一些关键的内部结构。

对象名称 描述
AdaptedConnection 支持 DBAPI 协议的适配连接对象的接口。
BindTyping 定义了在语句中传递绑定参数的不同方法以传递到数据库驱动程序。
Compiled 表示编译的 SQL 或 DDL 表达式。
DBAPIConnection 表示 PEP 249 数据库连接的协议。
DBAPICursor 表示 PEP 249 数据库游标的协议。
DBAPIType 表示 PEP 249 数据库类型的协议。
DDLCompiler
DefaultDialect Dialect 的默认实现
DefaultExecutionContext
Dialect 定义特定数据库和 DB-API 组合的行为。
ExecutionContext 用于对应于单个执行的 Dialect 的信使对象。
ExpandedState 表示在为语句生成“扩展”和“编译后”绑定参数时要使用的状态。
GenericTypeCompiler
Identified
IdentifierPreparer 根据选项处理标识符的引用和大小写折叠。
SQLCompiler Compiled 的默认实现。
StrSQLCompiler SQLCompiler 的子类,允许将一小部分非标准 SQL 特性渲染为字符串值。
class sqlalchemy.engine.BindTyping

定义了在语句中传递绑定参数的不同方法以传递到数据库驱动程序。

从版本 2.0 开始。

成员

NONE, RENDER_CASTS, SETINPUTSIZES

类签名

sqlalchemy.engine.BindTyping (enum.Enum)

attribute NONE = 1

没有采取任何步骤将类型信息传递给数据库驱动程序。

这是 SQLite、MySQL/MariaDB、SQL Server 等数据库的默认行为。

attribute RENDER_CASTS = 3

在 SQL 字符串中渲染转换或其他指令。

此方法适用于所有 PostgreSQL 方言,包括 asyncpg、pg8000、psycopg、psycopg2。实现此方法的方言可以选择在 SQL 语句中明确转换哪些类型的数据类型,哪些不转换。

使用 RENDER_CASTS 时,编译器将为渲染的字符串表示形式中的每个 BindParameter 对象调用 SQLCompiler.render_bind_cast() 方法,该对象的方言级类型设置了 TypeEngine.render_bind_cast 属性。

SQLCompiler.render_bind_cast() 也用于渲染一种形式的 “insertmanyvalues” 查询的转换,当同时设置了 InsertmanyvaluesSentinelOpts.USE_INSERT_FROM_SELECTInsertmanyvaluesSentinelOpts.RENDER_SELECT_COL_CASTS 时,转换应用于中间列,例如 “INSERT INTO t (a, b, c) SELECT p0::TYP, p1::TYP, p2::TYP ” “FROM (VALUES (?, ?), (?, ?), …)”。

2.0.10 版本中的新内容:- 现在在 “insertmanyvalues” 实现的某些部分中使用了 SQLCompiler.render_bind_cast()

attribute SETINPUTSIZES = 2

使用 pep-249 的 setinputsizes 方法。

仅对支持此方法的 DBAPIs 实现了此功能,并且对于 SQLAlchemy 方言已经设置了适当的基础架构的情况下才实现了。当前的方言包括 cx_Oracle,以及对使用 pyodbc 的 SQL Server 的可选支持。

使用 setinputsizes 时,方言还可以通过包含/排除列表的方式只对某些数据类型使用该方法。

使用 SETINPUTSIZES 时,对于每个执行的语句,具有绑定参数的语句都会调用 Dialect.do_set_input_sizes() 方法。

class sqlalchemy.engine.Compiled

表示已编译的 SQL 或 DDL 表达式。


SqlAlchemy 2.0 中文文档(四十七)(4)https://developer.aliyun.com/article/1563049

相关文章
|
4月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(四十一)(6)
SqlAlchemy 2.0 中文文档(四十一)
63 7
|
4月前
|
SQL JSON 关系型数据库
SqlAlchemy 2.0 中文文档(四十一)(8)
SqlAlchemy 2.0 中文文档(四十一)
57 6
|
4月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(四十一)(7)
SqlAlchemy 2.0 中文文档(四十一)(8)
60 5
|
4月前
|
SQL JSON 关系型数据库
SqlAlchemy 2.0 中文文档(四十一)(5)
SqlAlchemy 2.0 中文文档(四十一)
49 6
|
4月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(四十一)(3)
SqlAlchemy 2.0 中文文档(四十一)
50 4
|
4月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(四十一)(4)
SqlAlchemy 2.0 中文文档(四十一)
42 4
|
4月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(四十七)(1)
SqlAlchemy 2.0 中文文档(四十七)
42 0
|
4月前
|
SQL 缓存 数据库
SqlAlchemy 2.0 中文文档(四十七)(7)
SqlAlchemy 2.0 中文文档(四十七)
42 0
|
4月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(四十七)(9)
SqlAlchemy 2.0 中文文档(四十七)
45 0
|
4月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(四十七)(6)
SqlAlchemy 2.0 中文文档(四十七)
34 0