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()
方法的 URL
的 URL
对象。
返回:
一个可接受单个 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 连接,将其隔离恢复为默认值。
请注意,这是一个方言级方法,用作Connection
和Engine
隔离级别设施的实现的一部分;这些 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
继承自 Dialect
的 Dialect.set_isolation_level()
方法
给定一个 DBAPI 连接,设置其隔离级别。
注意,这是一个方言级方法,用作Connection
和Engine
隔离级别功能的实现的一部分;对于大多数典型用例,应优先使用这些 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 执行的 UPDATE
和 DELETE
语句的 rowcount。
attribute supports_sane_rowcount: bool = True
指示方言是否正确地实现了 UPDATE
和 DELETE
语句的 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_insert
、insert_returning
和use_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.Dialect
(sqlalchemy.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_using
、postgresql_where
和postgresql_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
支持使用executemany
的DELETE..RETURNING
方言。
attribute delete_returning: bool
如果方言支持带DELETE
的RETURNING
。
自版本 2.0 开始新增。
attribute delete_returning_multifrom: bool
如果方言支持DELETE..FROM
带RETURNING
。
自版本 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
– xidis_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
– xidis_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 连接。
请注意,这是一个方言级别的方法,用作Connection
和Engine
隔离级别功能实现的一部分;这些 API 应该优先用于大多数典型用例。
SqlAlchemy 2.0 中文文档(四十七)(7)https://developer.aliyun.com/article/1563054