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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: SqlAlchemy 2.0 中文文档(四十七)

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


用于设置方言范围内的每个连接的选项,例如隔离模式、Unicode 模式等。

“do_on_connect” 可调用函数是通过使用 PoolEvents.connect() 事件钩子来调用的,然后解包 DBAPI 连接并将其传递给可调用函数。

在 1.4 版本中更改:不再为方言的第一个连接调用两次 on_connect 钩子。然而,在 Dialect.initialize() 方法之前仍会调用 on_connect 钩子。

在 1.4.3 版本中更改:从一个新方法 on_connect_url 调用 on_connect 钩子,该方法传递用于创建连接参数的 URL。如果方言需要使用用于连接的 URL 对象来获取附加上下文,则可以实现 on_connect_url 而不是 on_connect。

如果返回 None,则不生成事件监听器。

返回:

一个可调用的函数,接受一个单一的 DBAPI 连接作为参数,或者为 None。

另请参阅

Dialect.connect() - 允许控制 DBAPI connect() 序列本身。

Dialect.on_connect_url() - 取代了 Dialect.on_connect() 来接收上下文中的 URL 对象。

method on_connect_url(url: URL) → Callable[[Any], Any] | None

继承自 Dialect Dialect.on_connect_url() *方法。

返回一个可调用的函数,用于设置新创建的 DBAPI 连接。

当由方言实现时,这个方法是一个新的钩子,它取代了 Dialect.on_connect() 方法。当方言没有实现时,它直接调用 Dialect.on_connect() 方法,以保持与现有方言的兼容性。不会为 Dialect.on_connect() 预期进行弃用。

这个可调用函数应该接受一个名为“conn”的参数,它就是 DBAPI 连接本身。内部可调用函数没有返回值。

例如:

class MyDialect(default.DefaultDialect):
    # ...
    def on_connect_url(self, url):
        def do_on_connect(connection):
            connection.execute("SET SPECIAL FLAGS etc")
        return do_on_connect

用于设置方言范围内的每个连接的选项,例如隔离模式、Unicode 模式等。

这个方法与 Dialect.on_connect() 不同之处在于,它接收与连接参数相关的 URL 对象。通常,从 Dialect.on_connect() 钩子获取这个对象的唯一方式是查看 Engine 本身,但是这个 URL 对象可能已经被插件替换。

注意

Dialect.on_connect_url() 的默认实现是调用 Dialect.on_connect() 方法。因此,如果一个方言实现了这个方法,那么除非覆盖方言直接从这里调用,否则不会调用 Dialect.on_connect() 方法。

版本 1.4.3 中的新内容:增加了 Dialect.on_connect_url(),它通常调用 Dialect.on_connect()

参数:

url – 表示传递给 Dialect.create_connect_args() 方法的 URLURL 对象。

返回:

一个可接受单个 DBAPI 连接作为参数的可调用对象,或者为 None。

另请参见

Dialect.on_connect()

attribute paramstyle: str

将要使用的参数风格(某些 DB-API 支持多个参数风格)。

attribute positional: bool

如果这个 Dialect 的参数风格是按位置的,则为 True。

attribute preexecute_autoincrement_sequences: bool = False

如果没有使用 RETURNING,则‘implicit’ 主键函数必须分别执行以获取它们的值,则为 True。

当在 Table 对象上使用 implicit_returning=False 参数时,这目前是针对 PostgreSQL 的。

attribute preparer

IdentifierPreparer 的别名

attribute reflection_options: Sequence[str] = ()

继承自 Dialect Dialect.reflection_options 属性

一个字符串名称序列,指示可以在使用 Table.autoload_with 时作为“反射选项”传递的关键字参数,这些参数将在 Table 对象上设置。

当前示例是 Oracle 方言中的“oracle_resolve_synonyms”。

method reset_isolation_level(dbapi_conn)

给定一个 DBAPI 连接,将其隔离恢复为默认值。

请注意,这是一个方言级方法,用作ConnectionEngine隔离级别设施的实现的一部分;这些 API 应该优先用于大多数典型用例。

另请参阅

Connection.get_isolation_level() - 查看当前级别

Connection.default_isolation_level - 查看默认级别

Connection.execution_options.isolation_level - 设置每个Connection的隔离级别

create_engine.isolation_level - 设置每个Engine的隔离级别

attribute returns_native_bytes: bool = False

指示 Python bytes()对象是否由驱动程序原生返回 SQL“binary”数据类型。

新版本 2.0.11 中提供。

attribute sequences_optional: bool = False

如果为 True,则表示Sequence.optional参数在Sequence构造上是否应该发出信号以不生成 CREATE SEQUENCE。仅适用于支持序列的方言。目前仅用于允许在指定 Sequence()用于其他后端的列上使用 PostgreSQL SERIAL。

attribute server_side_cursors: bool = False

已弃用;指示方言是否应尝试默认使用服务器端游标

attribute server_version_info: Tuple[Any, ...] | None = None

包含正在使用的 DB 后端的版本号的元组。

此值仅适用于支持的方言,并且通常在初始连接到数据库时填充。

method set_connection_execution_options(connection: Connection, opts: Mapping[str, Any]) → None

为给定连接建立执行选项。

这由DefaultDialect实现,以实现Connection.execution_options.isolation_level执行选项。方言可以拦截各种执行选项,这些选项可能需要修改特定 DBAPI 连接上的状态。

新版本 1.4 中提供。

method set_engine_execution_options(engine: Engine, opts: Mapping[str, Any]) → None

为给定引擎建立执行选项。

这由DefaultDialect实现,用于为给定的Engine创建的新Connection实例建立事件钩子,然后调用该连接的Dialect.set_connection_execution_options()方法。

method set_isolation_level(dbapi_connection: DBAPIConnection, level: Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']) → None

继承自 DialectDialect.set_isolation_level() 方法

给定一个 DBAPI 连接,设置其隔离级别。

注意,这是一个方言级方法,用作ConnectionEngine隔离级别功能的实现的一部分;对于大多数典型用例,应优先使用这些 API。

如果方言还实现了Dialect.get_isolation_level_values()方法,则给定的级别将保证是该序列中的字符串名称之一,且该方法不需要预先考虑查找失败。

另请参阅

Connection.get_isolation_level() - 查看当前级别

Connection.default_isolation_level - 查看默认级别

Connection.execution_options.isolation_level - 设置每个Connection的隔离级别

create_engine.isolation_level - 设置每个Engine的隔离级别

attribute statement_compiler

SQLCompiler的别名

attribute supports_alter: bool = True

如果数据库支持ALTER TABLE,则为True - 仅在某些情况下用于生成外键约束

attribute supports_comments: bool = False

表明方言支持对表和列进行评论的 DDL。

attribute supports_constraint_comments: bool = False

表示方言是否支持对约束进行评论的 DDL。

attribute supports_default_metavalue: bool = False

方言支持 INSERT… VALUES (DEFAULT)语法

attribute supports_default_values: bool = False

方言支持 INSERT… DEFAULT VALUES 语法

attribute supports_empty_insert: bool = True

方言支持 INSERT () VALUES ()

attribute supports_identity_columns: bool = False

目标数据库支持 IDENTITY

attribute supports_multivalues_insert: bool = False

目标数据库支持使用多个值集合的 INSERT…VALUES,即 INSERT INTO table (cols) VALUES (…), (…), (…), …

attribute supports_native_boolean: bool = False

指示方言是否支持本地布尔构造。这将阻止 Boolean 在使用该类型时生成 CHECK 约束。

attribute supports_native_decimal: bool = False

指示 Decimal 对象是否被处理并返回为精度数字类型,或者返回浮点数。

attribute supports_native_enum: bool = False

指示方言是否支持本地 ENUM 构造。这将阻止 Enum 在“本地”模式下使用时生成 CHECK 约束。

attribute supports_native_uuid: bool = False

指示 Python UUID() 对象是否由驱动程序原生处理 SQL UUID 数据类型。

新于版本 2.0。

attribute supports_sane_multi_rowcount: bool = True

指示方言是否正确地实现了通过 executemany 执行的 UPDATEDELETE 语句的 rowcount。

attribute supports_sane_rowcount: bool = True

指示方言是否正确地实现了 UPDATEDELETE 语句的 rowcount。

attribute supports_sane_rowcount_returning

如果此方言支持使用 RETURNING,则即使使用 RETURNING,也支持合理的行数。

对于不支持 RETURNING 的方言,这与 supports_sane_rowcount 是同义词。

attribute supports_sequences: bool = False

指示方言是否支持 CREATE SEQUENCE 或类似操作。

attribute supports_server_side_cursors: bool = False

指示方言是否支持服务器端游标。

attribute supports_simple_order_by_label: bool = True

目标数据库支持 ORDER BY ,其中 是 SELECT 的列子句中的标签。

attribute supports_statement_cache: bool = True

指示此方言是否支持缓存。

所有与语句缓存兼容的方言都应该在每个支持它的方言类和子类上直接设置此标志为 True。SQLAlchemy 在使用语句缓存之前会测试每个方言子类上是否本地存在此标志。这是为了提供对尚未完全测试以符合 SQL 语句缓存的旧版或新版方言的安全性。

新于版本 1.4.5。

另请参阅

第三方方言的缓存

attribute tuple_in_values: bool = False

目标数据库支持元组 IN,即 (x, y) IN ((q, p), (r, z))

attribute type_compiler: Any

传统的;这是一个在类级别的 TypeCompiler 类,在实例级别的 TypeCompiler 实例。

参考 type_compiler_instance。

attribute type_compiler_cls

GenericTypeCompiler 的别名。

attribute type_compiler_instance: TypeCompiler

用于编译 SQL 类型对象的 Compiled 类的实例。

新于版本 2.0。

method type_descriptor(typeobj)

提供一个特定于数据库的 TypeEngine 对象,给定来自 types 模块的通用对象。

此方法寻找一个名为 colspecs 的字典,作为类或实例级变量,并传递给 adapt_type()

attribute update_executemany_returning: bool = False

方言是否支持 UPDATE…RETURNING 与 executemany。

attribute update_returning: bool = False

如果方言支持使用 RETURNING 的 UPDATE

新于版本 2.0。

attribute update_returning_multifrom: bool = False

如果方言支持使用 RETURNING 的 UPDATE…FROM

新于版本 2.0。

attribute use_insertmanyvalues: bool = False

如果为 True,则表示应使用“insertmanyvalues”功能,以允许进行insert_executemany_returning行为,如果可能的话。

在实践中,将其设置为 True 意味着:

如果supports_multivalues_insertinsert_returninguse_insertmanyvalues都为 True,则 SQL 编译器将生成一个 INSERT,由DefaultDialect解释为ExecuteStyle.INSERTMANYVALUES执行,允许通过将单行 INSERT 语句重写为具有多个 VALUES 子句来 INSERT 多行并在给定大量行时多次执行语句以进行一系列批处理。

对于默认方言,该参数为 False,并且对于 SQLAlchemy 内部方言 SQLite、MySQL/MariaDB、PostgreSQL、SQL Server,该参数设置为 True。对于提供本地“带 RETURNING 的 executemany”支持且不支持supports_multivalues_insert的 Oracle,该参数保持为 False。对于不支持 RETURNING 的 MySQL/MariaDB,这些 MySQL 方言将不会报告insert_executemany_returning为 True。

版本 2.0 中的新功能。

另请参见

“插入多个值”行为适用于 INSERT 语句

attribute use_insertmanyvalues_wo_returning: bool = False

如果为 True,并且 use_insertmanyvalues 也为 True,则不包括 RETURNING 的 INSERT 语句也将使用“insertmanyvalues”。

版本 2.0 中的新功能。

另请参见

“插入多个值”行为适用于 INSERT 语句

class sqlalchemy.engine.Dialect

定义特定数据库和 DB-API 组合的行为。

元数据定义、SQL 查询生成、执行、结果集处理或其他在数据库之间变化的任何方面都在方言的一般类别下定义。方言充当其他特定于数据库的对象实现的工厂,包括 ExecutionContext、Compiled、DefaultGenerator 和 TypeEngine。

注意

第三方方言不应直接子类化Dialect。而应该子类化DefaultDialect或后代类。

成员

bind_typing, colspecs, connect(), construct_arguments, create_connect_args(), create_xid(), cte_follows_insert, dbapi, dbapi_exception_translation_map, ddl_compiler, default_isolation_level, default_metavalue_token, default_schema_name, default_sequence_base, delete_executemany_returning, delete_returning, delete_returning_multifrom, denormalize_name(), div_is_floordiv, do_begin(), do_begin_twophase(), do_close(), do_commit(), do_commit_twophase(), do_execute(), do_execute_no_params(), do_executemany(), do_ping(), do_prepare_twophase(), do_recover_twophase(), do_release_savepoint(), do_rollback(), do_rollback_to_savepoint(), do_rollback_twophase(), do_savepoint(), do_set_input_sizes(), do_terminate(), driver, engine_config_types, engine_created(), exclude_set_input_sizes, execute_sequence_format, execution_ctx_cls, favor_returning_over_lastrowid, get_async_dialect_cls(), get_check_constraints(), get_columns(), get_default_isolation_level(), get_dialect_cls(), get_dialect_pool_class(), get_driver_connection(), get_foreign_keys(), get_indexes(), get_isolation_level(), get_isolation_level_values(), get_materialized_view_names(), get_multi_check_constraints(), get_multi_columns(), get_multi_foreign_keys(), get_multi_indexes(), get_multi_pk_constraint(), get_multi_table_comment(), get_multi_table_options(), get_multi_unique_constraints(), get_pk_constraint(), get_schema_names(), get_sequence_names(), get_table_comment(), get_table_names(), get_table_options(), get_temp_table_names(), get_temp_view_names(), get_unique_constraints(), get_view_definition(), get_view_names(), has_index(), has_schema(), has_sequence(), has_table(), has_terminate, identifier_preparer, import_dbapi(), include_set_input_sizes, initialize(), inline_comments, insert_executemany_returning, insert_executemany_returning_sort_by_parameter_order, insert_returning, insertmanyvalues_implicit_sentinel, insertmanyvalues_max_parameters, insertmanyvalues_page_size, is_async, is_disconnect(), label_length, load_provisioning(), loaded_dbapi, max_identifier_length, name, normalize_name(), on_connect(), on_connect_url(), paramstyle, positional, preexecute_autoincrement_sequences, preparer, reflection_options, reset_isolation_level(), returns_native_bytes, sequences_optional, server_side_cursors, server_version_info, set_connection_execution_options(), set_engine_execution_options(), set_isolation_level(), statement_compiler, supports_alter, supports_comments, supports_constraint_comments, supports_default_metavalue, supports_default_values, supports_empty_insert, supports_identity_columns, supports_multivalues_insert, supports_native_boolean, supports_native_decimal, supports_native_enum, supports_native_uuid, supports_sane_multi_rowcount, supports_sane_rowcount, supports_sequences, supports_server_side_cursors, supports_simple_order_by_label, supports_statement_cache, tuple_in_values, type_compiler, type_compiler_cls, type_compiler_instance, type_descriptor(), update_executemany_returning, update_returning, update_returning_multifrom, use_insertmanyvalues, use_insertmanyvalues_wo_returning

类签名

sqlalchemy.engine.Dialectsqlalchemy.event.registry.EventTarget

attribute bind_typing = 1

定义一种将类型信息传递给数据库和/或驱动程序以用于绑定参数的方法。

请参阅BindTyping以获取值。

2.0 版本中的新功能。

attribute colspecs: MutableMapping[Type[TypeEngine[Any]], Type[TypeEngine[Any]]]

从 sqlalchemy.types 映射到特定于方言类的子类的 TypeEngine 类的字典。此字典仅在类级别上存在,不从方言实例本身访问。

method connect(*cargs: Any, **cparams: Any) → DBAPIConnection

使用此方言的 DBAPI 建立连接。

此方法的默认实现是:

def connect(self, *cargs, **cparams):
    return self.dbapi.connect(*cargs, **cparams)

*cargs, **cparams参数直接从此方言的Dialect.create_connect_args()方法生成。

当需要在从 DBAPI 获取新连接时执行程序化的每个连接步骤时,可以使用此方法进行方言处理。

参数:

  • *cargs – 从Dialect.create_connect_args()方法返回的位置参数
  • **cparams – 从Dialect.create_connect_args()方法返回的关键字参数。

返回:

一个 DBAPI 连接,通常来自PEP 249模块级别的.connect()函数。

另请参阅

Dialect.create_connect_args()

Dialect.on_connect()

attribute construct_arguments: List[Tuple[Type[SchemaItem | ClauseElement], Mapping[str, Any]]] | None = None

各种 SQLAlchemy 构造的可选参数说明,通常是模式项。

要实现,建立为一系列元组,如下所示:

construct_arguments = [
    (schema.Index, {
        "using": False,
        "where": None,
        "ops": None
    })
]

如果上述构造在 PostgreSQL 方言上建立,则Index构造现在将接受关键字参数postgresql_usingpostgresql_wherepostgresql_ops。任何其他指定给Index构造函数的以postgresql_为前缀的参数都将引发ArgumentError

不包括construct_arguments成员的方言将不参与参数验证系统。对于这样的方言,所有参与构造的命名空间中以该方言名称为前缀的参数名称都被所有参与构造接受。这里的理由是,尚未实现此功能的第三方方言将继续以旧方式运行。

另请参阅

DialectKWArgs - 实现基类,消耗DefaultDialect.construct_arguments

method create_connect_args(url: URL) → ConnectArgsType

构建与 DB-API 兼容的连接参数。

给定一个URL对象,返回一个元组,包含一个适合直接发送到 dbapi 的 connect 函数的(*args, **kwargs)。这些参数将发送到Dialect.connect()方法,然后运行 DBAPI 级别的connect()函数。

该方法通常使用URL.translate_connect_args()方法来生成一个选项字典。

默认实现为:

def create_connect_args(self, url):
    opts = url.translate_connect_args()
    opts.update(url.query)
    return ([], opts)

参数:

url – 一个URL对象

返回:

一个(*args, **kwargs)元组,将传递给Dialect.connect()方法。

另请参阅

URL.translate_connect_args()

method create_xid() → Any

创建一个两阶段事务 ID。

此 ID 将传递给 do_begin_twophase()、do_rollback_twophase()、do_commit_twophase()。其格式未指定。

attribute cte_follows_insert: bool

目标数据库,在给定带有 INSERT 语句的 CTE 时,需要 CTE 位于 INSERT 语句下方。

attribute dbapi: ModuleType | None

对 DBAPI 模块对象本身的引用。

SQLAlchemy 方言使用类方法Dialect.import_dbapi()导入 DBAPI 模块。其原理是任何方言模块都可以被导入并用于生成 SQL 语句,而无需安装实际的 DBAPI 驱动程序。只有在使用create_engine()构造Engine时才会导入 DBAPI;在那时,创建过程将把 DBAPI 模块分配给此属性。

因此,方言应该实现Dialect.import_dbapi()方法,该方法将导入必要的模块并返回它,然后在方言代码中引用self.dbapi以引用 DBAPI 模块内容。

自版本更改:Dialect.dbapi属性是作为每个Dialect实例对 DBAPI 模块的引用。以前未完全记录的.Dialect.dbapi()类方法已被弃用,并由Dialect.import_dbapi()替换。

attribute dbapi_exception_translation_map: Mapping[str, str] = {}

一个名称字典,其值将包含 pep-249 异常的名称(“IntegrityError”,“OperationalError”等),键为备用类名,以支持 DBAPI 具有未按其引用命名的异常类的情况(例如,IntegrityError = MyException)。在绝大多数情况下,此字典为空。

attribute ddl_compiler: Type[DDLCompiler]

用于编译 DDL 语句的Compiled类。

attribute default_isolation_level: IsolationLevel | None

在新连接上隐式存在的隔离性。

attribute default_metavalue_token: str = 'DEFAULT'

对于 INSERT… VALUES (DEFAULT)语法,放在括号中的标记。

例如,对于 SQLite,这是关键字“NULL”。

attribute default_schema_name: str | None

默认模式的名称。此值仅适用于支持方言,并且通常在与数据库的初始连接期间填充。

attribute default_sequence_base: int

将默认值转换为 CREATE SEQUENCE DDL 语句的“START WITH”部分。

attribute delete_executemany_returning: bool

支持使用executemanyDELETE..RETURNING方言。

attribute delete_returning: bool

如果方言支持带DELETERETURNING

自版本 2.0 开始新增。

attribute delete_returning_multifrom: bool

如果方言支持DELETE..FROMRETURNING

自版本 2.0 开始新增。

method denormalize_name(name: str) → str

如果名称为全小写,则将给定名称转换为后端的不区分大小写的标识符。

仅当方言定义了requires_name_normalize=True时才会使用此方法。

attribute div_is_floordiv: bool

目标数据库将/运算符视为“floor division”。

method do_begin(dbapi_connection: PoolProxiedConnection) → None

提供给定 DB-API 连接的connection.begin()的实现。

DBAPI 没有专用的“begin”方法,并且预计事务是隐式的。为那些可能需要在此区域提供额外帮助的 DBAPI 提供此挂钩。

参数:

dbapi_connection – 一个 DBAPI 连接,通常在ConnectionFairy内代理。

method do_begin_twophase(connection: Connection, xid: Any) → None

在给定连接上开始一个两阶段事务。

参数:

  • connection – 一个Connection
  • xid – xid
method do_close(dbapi_connection: DBAPIConnection) → None

提供给定 DBAPI 连接的connection.close()的实现。

当连接已从池中分离或超出池的正常容量返回时,Pool将调用此挂钩。

method do_commit(dbapi_connection: PoolProxiedConnection) → None

提供给定 DB-API 连接的connection.commit()的实现。

参数:

dbapi_connection – 一个 DBAPI 连接,通常在ConnectionFairy内代理。

method do_commit_twophase(connection: Connection, xid: Any, is_prepared: bool = True, recover: bool = False) → None

在给定连接上提交一个两阶段事务。

参数:

  • connection – 一个Connection
  • xid – xid
  • is_prepared – 是否调用了TwoPhaseTransaction.prepare()
  • recover – 如果传递了 recover 标志。
method do_execute(cursor: DBAPICursor, statement: str, parameters: Sequence[Any] | Mapping[str, Any] | None, context: ExecutionContext | None = None) → None

提供 cursor.execute(statement, parameters) 的实现。

method do_execute_no_params(cursor: DBAPICursor, statement: str, context: ExecutionContext | None = None) → None

提供 cursor.execute(statement) 的实现。

不应发送参数集合。

method do_executemany(cursor: DBAPICursor, statement: str, parameters: Sequence[Sequence[Any]] | Sequence[Mapping[str, Any]], context: ExecutionContext | None = None) → None

提供 cursor.executemany(statement, parameters) 的实现。

method do_ping(dbapi_connection: DBAPIConnection) → bool

检查 DBAPI 连接并在连接可用时返回 True。

method do_prepare_twophase(connection: Connection, xid: Any) → None

在给定的连接上准备两阶段事务。

参数:

  • connection – 一个Connection
  • xid – xid
method do_recover_twophase(connection: Connection) → List[Any]

恢复在给定连接上未提交的准备好的两阶段事务标识符列表。

参数:

connection – 一个Connection

method do_release_savepoint(connection: Connection, name: str) → None

在连接上释放指定的保存点。

参数:

  • connection – 一个Connection
  • name – 保存点名称。
method do_rollback(dbapi_connection: PoolProxiedConnection) → None

给定 DB-API 连接,提供 connection.rollback() 的实现。

参数:

dbapi_connection – 一个 DBAPI 连接,通常在 ConnectionFairy 中被代理。

method do_rollback_to_savepoint(connection: Connection, name: str) → None

将连接回滚到指定的保存点。

参数:

  • connection – 一个Connection
  • name – 保存点名称。
method do_rollback_twophase(connection: Connection, xid: Any, is_prepared: bool = True, recover: bool = False) → None

在给定连接上回滚两阶段事务。

参数:

  • connection – 一个Connection
  • xid – xid
  • is_prepared – 是否调用了TwoPhaseTransaction.prepare()
  • recover – 如果传递了 recover 标志。
method do_savepoint(connection: Connection, name: str) → None

使用给定名称创建保存点。

参数:

  • connection – 一个Connection
  • name – 保存点名称。
method do_set_input_sizes(cursor: DBAPICursor, list_of_tuples: _GenericSetInputSizesType, context: ExecutionContext) → Any

调用 cursor.setinputsizes() 方法并传递适当的参数。

如果 Dialect.bind_typing 属性设置为 BindTyping.SETINPUTSIZES 值,则调用此挂钩。参数数据以元组列表形式传递(paramname、dbtype、sqltype),其中 paramname 是语句中参数的键,dbtype 是 DBAPI 数据类型,sqltype 是 SQLAlchemy 类型。元组的顺序是正确的参数顺序。

新版本 1.4 中新增。

2.0 版本中的更改:- 通过将 Dialect.bind_typing 设置为 BindTyping.SETINPUTSIZES 来启用 setinputsizes 模式。接受 use_setinputsizes 参数的方言应适当设置此值。

method do_terminate(dbapi_connection: DBAPIConnection) → None

提供了一个实现 connection.close() 的方法,尽可能地避免阻塞,给定一个 DBAPI 连接。

在绝大多数情况下,这只是调用了 .close(),但对于一些 asyncio 方言可能调用了不同的 API 特性。

当连接正在被回收利用或已被废弃时,该钩子由 Pool 调用。

在版本 1.4.41 中新增。

attribute driver: str

方言的 DBAPI 的标识名称

attribute engine_config_types: Mapping[str, Any]

一个字符串键的映射,可以在引擎配置中链接到类型转换函数。

classmethod engine_created(engine: Engine) → None

在返回最终 Engine 之前调用的一个方便的钩子。

如果方言从 get_dialect_cls() 方法返回了一个不同的类,则该钩子将在两个类上调用,首先在由 get_dialect_cls() 方法返回的方言类上调用,然后在调用该方法的类上调用。

该钩子应该由方言和/或包装器使用,以应用特殊事件到引擎或其组件。特别是,它允许方言包装类应用方言级别的事件。

attribute exclude_set_input_sizes: Set[Any] | None

在自动 cursor.setinputsizes() 调用中应该排除的一组 DBAPI 类型对象。

仅在 bind_typing 为 BindTyping.SET_INPUT_SIZES 时使用。

attribute execute_sequence_format: Type[Tuple[Any, ...]] | Type[Tuple[List[Any]]]

要么是 ‘tuple’ 类型,要么是 ‘list’ 类型,取决于 cursor.execute() 对于第二个参数接受的是什么(它们会变化)。

attribute execution_ctx_cls: Type[ExecutionContext]

用于处理语句执行的 ExecutionContext 类。

attribute favor_returning_over_lastrowid: bool

对于同时支持 lastrowid 和 RETURNING 插入策略的后端,优先考虑 RETURNING 用于简单的单整数主键插入。

cursor.lastrowid 在大多数后端上性能更好。

classmethod get_async_dialect_cls(url: URL) → Type[Dialect]

给定一个 URL,返回将由异步引擎使用的 Dialect

默认情况下,这是 Dialect.get_dialect_cls() 的别名,并且只是返回 cls。如果方言提供了同名的同步和异步版本,如 psycopg 驱动程序,则可能会使用它。

在版本 2 中新增。

另请参阅

Dialect.get_dialect_cls()

method get_check_constraints(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedCheckConstraint]

返回 table_name 中检查约束的信息。

给定一个字符串table_name和一个可选的字符串schema,返回检查约束信息,作为与ReflectedCheckConstraint字典对应的字典列表。

这是一种内部方言方法。应用程序应该使用Inspector.get_check_constraints()

method get_columns(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedColumn]

返回table_name中的列信息。

给定一个Connection,一个字符串table_name和一个可选的字符串schema,返回列信息,作为与ReflectedColumn字典对应的字典列表。

这是一种内部方言方法。应用程序应该使用Inspector.get_columns()

method get_default_isolation_level(dbapi_conn: DBAPIConnection) → Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']

给定一个 DBAPI 连接,返回其隔离级别,或者如果无法检索到隔离级别,则返回默认隔离级别。

此方法只能引发 NotImplementedError,并且不能引发任何其他异常,因为它在第一次连接时隐式使用。

该方法必须返回一个值,以便于支持隔离级别设置的方言,因为这个级别是在进行每个连接隔离级别更改时将要回滚到的级别。

该方法默认使用Dialect.get_isolation_level()方法,除非被方言覆盖。

在 1.3.22 版本中新增。

classmethod get_dialect_cls(url: URL) → Type[Dialect]

给定一个 URL,返回将要使用的Dialect

这是一个钩子,允许外部插件围绕现有方言提供功能,通过允许根据入口点从 URL 加载插件,然后插件返回实际要使用的方言。

默认情况下,这只是返回 cls。

method get_dialect_pool_class(url: URL) → Type[Pool]

返回用于给定 URL 的 Pool 类。

method get_driver_connection(connection: DBAPIConnection) → Any

返回由外部驱动程序包返回的连接对象。

对于使用 DBAPI 兼容驱动程序的普通方言,此调用将只返回作为参数传递的connection。 对于代替适配非 DBAPI 兼容驱动程序的方言,例如在适配异步驱动程序时,此调用将返回驱动程序返回的类似连接的对象。

在 1.4.24 版本中新增。

method get_foreign_keys(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedForeignKeyConstraint]

返回table_name中的 foreign_keys 信息。

给定一个Connection、一个字符串table_name和一个可选的字符串schema,返回外键信息,作为与ReflectedForeignKeyConstraint字典对应的字典列表。

这是一个内部方言方法。应用程序应该使用Inspector.get_foreign_keys()

method get_indexes(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedIndex]

返回table_name中索引的信息。

给定一个Connection、一个字符串table_name和一个可选的字符串schema,返回索引信息,作为与ReflectedIndex字典对应的字典列表。

这是一个内部方言方法。应用程序应该使用Inspector.get_indexes()

method get_isolation_level(dbapi_connection: DBAPIConnection) → Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']

给定一个 DBAPI 连接,返回其隔离级别。

在使用Connection对象时,可以使用Connection.connection访问器获取相应的 DBAPI 连接。

请注意,这是一个方言级别的方法,用作ConnectionEngine隔离级别功能实现的一部分;这些 API 应该优先用于大多数典型用例。


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

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(五十四)(2)
SqlAlchemy 2.0 中文文档(五十四)
101 1
|
4月前
|
SQL 关系型数据库 API
SqlAlchemy 2.0 中文文档(五十四)(5)
SqlAlchemy 2.0 中文文档(五十四)
46 1
|
4月前
|
SQL 关系型数据库 测试技术
SqlAlchemy 2.0 中文文档(五十四)(4)
SqlAlchemy 2.0 中文文档(五十四)
39 1
|
4月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(四十九)(4)
SqlAlchemy 2.0 中文文档(四十九)
37 1
|
4月前
|
SQL API 数据库
SqlAlchemy 2.0 中文文档(四十七)(5)
SqlAlchemy 2.0 中文文档(四十七)
26 0
|
4月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(四十七)(1)
SqlAlchemy 2.0 中文文档(四十七)
42 0
|
4月前
|
SQL 缓存 数据库
SqlAlchemy 2.0 中文文档(四十七)(7)
SqlAlchemy 2.0 中文文档(四十七)
43 0
|
4月前
|
SQL 存储 缓存
SqlAlchemy 2.0 中文文档(四十七)(8)
SqlAlchemy 2.0 中文文档(四十七)
31 0
|
4月前
|
SQL 存储 编译器
SqlAlchemy 2.0 中文文档(四十七)(4)
SqlAlchemy 2.0 中文文档(四十七)
30 0
|
4月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(四十七)(9)
SqlAlchemy 2.0 中文文档(四十七)
47 0