核心内部结构¶
这里列出了一些关键的内部结构。
对象名称 |
描述 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-
类 sqlalchemy.engine 中。BindTyping(绑定类型化)¶
定义将语句中绑定参数的类型信息传递给数据库驱动程序的不同方法。
2.0 版的新Function。
类签名
classsqlalchemy.engine.BindTyping
(enum.枚举
)-
属性sqlalchemy.engine.BindTyping。
无 = 1¶
不执行任何步骤将键入信息传递给数据库驱动程序。
这是 SQLite、MySQL / MariaDB、SQL Server 等数据库的默认行为。
-
属性sqlalchemy.engine.BindTyping。
RENDER_CASTS = 3¶
在 SQL 字符串中呈现强制转换或其他指令。
此方法用于所有 PostgreSQL 方言,包括 asyncpg、pg8000、psycopg、psycopg2。实现这一点的方言可以选择在 SQL 语句中显式转换哪些类型的数据类型,哪些不显式转换。
使用 RENDER_CASTS 时,编译器将调用SQLCompiler.render_bind_cast()
方法,用于每个BindParameter
对象的呈现字符串表示形式,其方言级类型设置TypeEngine.render_bind_cast
属性。
该SQLCompiler.render_bind_cast()
还用于渲染强制转换 对于一种形式的 “insertmanyvalues” 查询,当InsertmanyvaluesSentinelOpts.USE_INSERT_FROM_SELECT
和InsertmanyvaluesSentinelOpts.RENDER_SELECT_COL_CASTS
,其中强制转换应用于中间列,例如 “INSERT INTO t (a, b, c) SELECT p0::TYP, p1::TYP, p2::TYP ” “FROM (values (?, ?), (?, ?), ...)”。
2.0.10 版本的新Function: -SQLCompiler.render_bind_cast()
现在用于 “insertmanyvalues” 实现的某些元素中。
-
属性sqlalchemy.engine.BindTyping。
SETINPUTSIZES = 2¶
使用 pep-249 setinputsizes 方法。
这仅针对支持此方法的 DBAPI 实现,并且 SQLAlchemy 方言具有适用于该方言设置的基础结构。当前的方言包括 python-oracledb、cx_Oracle 以及对使用 pyodbc 的 SQL Server 的可选支持。
当使用 setinputsizes 时,方言还可以只使用包含/排除列表对某些数据类型使用该方法。
使用 SETINPUTSIZES 时,将为执行的每个具有绑定参数的语句调用Dialect.do_set_input_sizes()
方法。
-
-
类 sqlalchemy.engine 中。编译¶
表示已编译的 SQL 或 DDL 表达式。
成员
__init__()、cache_key、compile_state、construct_params()、dml_compile_state、execution_options、参数、sql_compiler、状态、语句、字符串Compiled
对象的__str__
方法应生成语句的实际文本。编译
的对象是 特定于其底层数据库方言,并且还可以 或可能不特定于 特定的 BIND 参数集。 在任何情况下都不应编译
对象依赖于这些绑定参数的实际值,即使它可能将这些值引用为默认值。-
方法sqlalchemy.engine.Compiled。
__init__(dialect: 方言, statement:ClauseElementNone, schema_translate_map:SchemaTranslateMapTypeNone=None, render_schema_translate: bool = False, compile_kwargs: Mapping[str, Any] = {})¶
构造一个新的Compiled
对象。
-
属性sqlalchemy.engine.Compiled。
cache_key:CacheKeyNone = 无¶
在创建此
Compiled
对象。
这用于需要访问原始CacheKey
实例实例,通常是为了协调
BindParameter
对象的原始列表,其中包含在每次调用时生成的每个语句列表。
-
属性sqlalchemy.engine.Compiled。
compile_state:CompileStateNone = 无¶
可选的CompileState
对象,用于维护编译器使用的其他状态。
主要可执行对象,如Insert
、更新
、删除
、Select
将在编译时生成此状态,以便计算有关对象的其他信息。对于要执行的顶级对象,状态可以存储在此处,它也可以适用于结果集处理。
在 1.4 版本加入.
-
方法sqlalchemy.engine.Compiled。
construct_params(params:_CoreSingleExecuteParamsNone=None, extracted_parameters:Sequence[BindParameter[Any]]None=None, escape_names: bool = True)→_MutableCoreSingleExecuteParamsNone¶
返回此编译对象的 bind params。
参数
params¶ – 字符串/对象对的字典,其值将覆盖编译到语句中的绑定值。
-
属性sqlalchemy.engine.Compiled。
dml_compile_state:CompileStateNone = 无¶
在分配 .isinsert、.isupdate 或 .isdelete 的同一点分配的可选CompileState
。
这通常与 .compile_state 对象相同,但ORMFromStatementCompileState
等情况除外 对象。
在 1.4.40 版本加入.
-
属性sqlalchemy.engine.Compiled。
execution_options: _ExecuteOptions = {}¶
从语句传播的执行选项。在某些情况下,语句的子元素可以修改这些内容。
-
属性sqlalchemy.engine.Compiled。
参数¶
返回此编译对象的 bind params。
-
属性sqlalchemy.engine.Compiled。
sql_compiler¶
返回能够处理 SQL 表达式的 Compiled。
如果此编译器是一个,它可能只返回 'self'。
-
属性sqlalchemy.engine.Compiled。
state: CompilerState¶
编译器状态的描述
-
属性sqlalchemy.engine.Compiled。
statement:ClauseElementNone = None¶
要编译的语句。
-
属性sqlalchemy.engine.Compiled。
字符串: str = ''¶ 语句
的字符串表示形式
-
-
类 sqlalchemy.engine.interfaces 中。DBAPIConnection¶
协议,表示 PEP 249 数据库连接。
2.0 版的新Function。
类签名
类sqlalchemy.engine.interfaces.DBAPIConnection
(typing_extensions.协议
)-
属性sqlalchemy.engine.interfaces.DBAPIConnection.
autocommit: bool¶
-
方法sqlalchemy.engine.interfaces.DBAPIConnection.
close()None ¶
-
方法sqlalchemy.engine.interfaces.DBAPIConnection.
commit()无 ¶
-
方法sqlalchemy.engine.interfaces.DBAPIConnection.
rollback(None ¶
-
-
类 sqlalchemy.engine.interfaces 中。DBAPICursor¶
协议表示 PEP 249 数据库游标。
2.0 版的新Function。
成员
arraysize, callproc(), close(), description, execute(), executemany(), fetchall(), fetchmany(), fetchone(), lastrowid, nextset(), rowcount, setinputsizes(), setoutputsize()
类签名
类sqlalchemy.engine.interfaces.DBAPICursor
(typing_extensions.协议
)-
attributesqlalchemy.engine.interfaces.DBAPICursor.
arraysize: int¶
-
methodsqlalchemy.engine.interfaces.DBAPICursor.
callproc(procname: str, parameters: Sequence[Any] = Ellipsis)Any ¶
-
方法sqlalchemy.engine.interfaces.DBAPICursor.
close()None ¶
-
属性sqlalchemy.engine.interfaces.DBAPICursor.
说明¶
Cursor 的 description 属性。
另请参阅
cursor.description - 在 PEP 249 中
-
methodsqlalchemy.engine.interfaces.DBAPICursor.
execute(operation: Any, parameters:Sequence[Any]Mapping[str,Any]None=None)Any ¶
-
methodsqlalchemy.engine.interfaces.DBAPICursor.
executemany(operation: Any, parameters:Sequence[Sequence[Any]]Sequence[Mapping[str,Any]])Any ¶
-
methodsqlalchemy.engine.interfaces.DBAPICursor.
fetchall()序列[Any] ¶
-
methodsqlalchemy.engine.interfaces.DBAPICursor.
fetchmany(size: int = Ellipsis)序列[Any] ¶
-
methodsqlalchemy.engine.interfaces.DBAPICursor.
fetchone()→AnyNone¶
-
属性sqlalchemy.engine.interfaces.DBAPICursor.
lastrowid: int¶
-
方法sqlalchemy.engine.interfaces.DBAPICursor.
nextset()→boolNone¶
-
attribute rowcount(属性sqlalchemy.engine.interfaces.DBAPICursor.
rowcount)¶
-
方法sqlalchemy.engine.interfaces.DBAPICursor.
setinputsizes(sizes: Sequence[Any])None ¶
-
方法sqlalchemy.engine.interfaces.DBAPICursor.
setoutputsize(size: Any, column: Any)None ¶
-
-
类 sqlalchemy.engine.interfaces 中。DBAPIType 语言¶
协议表示 PEP 249 数据库类型。
2.0 版的新Function。
类签名
类sqlalchemy.engine.interfaces.DBAPIType
(typing_extensions.协议
)
-
类 sqlalchemy.sql.compiler。DDLCompiler¶
成员
__init__(), cache_key, compile_state, construct_params(), define_constraint_remote_table(), dml_compile_state, execution_options, 参数, sql_compiler, 状态, 语句, 字符串-
methodsqlalchemy.sql.compiler.DDLCompiler.
__init__(dialect: 方言, statement:ClauseElementNone, schema_translate_map:SchemaTranslateMapTypeNone=None, render_schema_translate: bool = False,compile_kwargs: Mapping[str, Any] = {})¶
继承自sqlalchemy.sql.compiler.Compiled.__init__
Compiled
的方法
构造一个新的Compiled
对象。
-
属性sqlalchemy.sql.compiler.DDLCompiler.
cache_key:CacheKeyNone = None¶
继承自Compiled
的Compiled.cache_key
属性
在创建此
Compiled
对象。
这用于需要访问原始CacheKey
实例实例,通常是为了协调
BindParameter
对象的原始列表,其中包含在每次调用时生成的每个语句列表。
-
属性sqlalchemy.sql.compiler.DDLCompiler.
compile_state:CompileStateNone = None¶
继承自Compiled
的Compiled.compile_state
属性
可选的CompileState
对象,用于维护编译器使用的其他状态。
主要可执行对象,如Insert
、更新
、删除
、Select
将在编译时生成此状态,以便计算有关对象的其他信息。对于要执行的顶级对象,状态可以存储在此处,它也可以适用于结果集处理。
在 1.4 版本加入.
-
方法sqlalchemy.sql.compiler.DDLCompiler.
construct_params(params:_CoreSingleExecuteParamsNone=None, extracted_parameters:Sequence[BindParameter[Any]]None=None, escape_names: bool = True)→_MutableCoreSingleExecuteParamsNone¶
返回此编译对象的 bind params。
参数
params¶ – 字符串/对象对的字典,其值将覆盖编译到语句中的绑定值。
-
方法sqlalchemy.sql.compiler.DDLCompiler.
define_constraint_remote_table(constraint, table, preparer)¶
格式化 CREATE CONSTRAINT 子句的远程表子句。
-
属性sqlalchemy.sql.compiler.DDLCompiler.
dml_compile_state:CompileStateNone = None¶
继承自Compiled
的Compiled.dml_compile_state
属性
在分配 .isinsert、.isupdate 或 .isdelete 的同一点分配的可选CompileState
。
这通常与 .compile_state 对象相同,但ORMFromStatementCompileState
等情况除外 对象。
在 1.4.40 版本加入.
-
属性sqlalchemy.sql.compiler.DDLCompiler.
execution_options: _ExecuteOptions = {}¶
继承自Compiled
的Compiled.execution_options
属性
从语句传播的执行选项。在某些情况下,语句的子元素可以修改这些内容。
-
属性sqlalchemy.sql.compiler.DDLCompiler.
参数¶
继承自Compiled
的Compiled.params
属性
返回此编译对象的 bind params。
-
属性sqlalchemy.sql.compiler.DDLCompiler.
sql_compiler¶
-
属性sqlalchemy.sql.compiler.DDLCompiler.
状态:CompilerState¶
编译器状态的描述
-
attributesqlalchemy.sql.compiler.DDLCompiler.
statement:ClauseElementNone = None¶
继承自Compiled
的Compiled.statement
属性
要编译的语句。
-
属性sqlalchemy.sql.compiler.DDLCompiler.
字符串: str = ''¶
继承自Compiled
的Compiled.string
属性语句
的字符串表示形式
-
-
类 sqlalchemy.engine.default。默认方言¶
Dialect 的默认实现
成员
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()、驱动程序、engine_config_types、engine_created()、exclude_set_input_sizes、execute_sequence_format、execution_ctx_cls、 favor_returning_over_lastrowid、full_returning、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、名称、 normalize_name(), on_connect(), on_connect_url(), paramstyle, 位置, 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_sane_rowcount_returning、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.default.DefaultDialect.
bind_typing = 1¶
定义一种将类型信息传递给 Bound 参数的数据库和/或 driver 的方法。
有关值,请参阅BindTyping
。
2.0 版的新Function。
-
属性sqlalchemy.engine.default.DefaultDialect.
colspecs: MutableMapping[Type[TypeEngine[Any]], Type[TypeEngine[Any]]] = {}¶
来自 sqlalchemy.types 的 TypeEngine 类的字典,映射到特定于 dialect 类的子类。此字典只是类级别的,不能从 dialect 实例本身访问。
-
方法sqlalchemy.engine.default.DefaultDialect.
connect(*cargs, **cparams)¶
使用此方言的 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()
函数。
-
属性sqlalchemy.engine.default.DefaultDialect.
construct_arguments:List[Tuple[Type[SchemaItemClauseElement],Mapping[str,Any]]]None = None¶
继承自Dialect
的Dialect.construct_arguments
属性
用于各种 SQLAlchemy 构造(通常是架构项)的可选参数说明符集。
要实现,请建立为一系列 Tuples,如下所示:construct_arguments = [ (schema.Index, {"using": False, "where": None, "ops": None}), ]
如果上述构造是在 PostgreSQL 方言上建立的,则 Index
构造现在将接受关键字参数postgresql_using
,postgresql_where
, nadpostgresql_ops
.指定给Index
的构造函数的任何其他参数 前缀为postgresql_
将引发ArgumentError
。
不包含construct_arguments
成员的方言将不参与参数验证系统。对于此类方言,任何参数名称都由所有参与的构造接受,在以该方言名称为前缀的参数命名空间内。这里的基本原理是,尚未实现此功能的第三方方言可以继续以旧方式运行。
另请参阅
-
方法sqlalchemy.engine.default.DefaultDialect.
create_connect_args(url)¶
构建与 DB-API 兼容的连接参数。
给定一个URL
对象,返回一个由适合直接发送的(*args, **kwargs)
组成的元组 添加到 dbapi 的 connect 函数中。 参数将发送到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)
参数
结果
一个(*args, **kwargs)
的元组,它将传递给Dialect.connect()
方法。
-
方法sqlalchemy.engine.default.DefaultDialect.
create_xid()¶
创建一个随机的两阶段交易 ID。
此 ID 将传递给 do_begin_twophase()、do_rollback_twophase()、do_commit_twophase()。其格式未指定。
-
属性sqlalchemy.engine.default.DefaultDialect.
cte_follows_insert: bool = False¶
目标数据库,当给定带有 INSERT 语句的 CTE 时,CTE 需要低于 INSERT
-
属性sqlalchemy.engine.default.DefaultDialect.
dbapi:ModuleTypeNone¶
对 DBAPI 模块对象本身的引用。
SQLAlchemy dialects 使用 classmethod 导入 DBAPI 模块Dialect.import_dbapi()
中。基本原理是,任何方言 模块可以导入并用于生成 SQL 语句,而无需 需要安装实际的 DBAPI 驱动程序。 仅当Engine
是使用create_engine()
构建的,才会导入 DBAPI;此时,创建过程会将 DBAPI 模块分配给此属性。
因此,方言应该实现Dialect.import_dbapi()
它将导入必要的模块并返回它,然后引用 到方言代码中的self.dbapi
中引用 DBAPI 模块内容。
版本更改:Dialect.dbapi
属性专门用作对 DBAPI 模块的每个Dialect
实例的引用。上一个未完全记录的.Dialect.dbapi()
classmethod 已弃用,取而代之的是Dialect.import_dbapi()。
-
属性sqlalchemy.engine.default.DefaultDialect.
dbapi_exception_translation_map: Mapping[str, str] = {}¶
继承自Dialect.dbapi_exception_translation_map
Dialect
的属性
一个名称字典,将包含与备用类名称键控的 pep-249 异常的名称(“IntegrityError”、“OperationalError”等)作为值,以支持 DBAPI 具有未按引用方式命名的异常类的情况(例如 IntegrityError = MyException)。在绝大多数情况下,此字典是空的。
-
属性sqlalchemy.engine.default.DefaultDialect.
ddl_compiler¶ DDLCompiler
的别名
-
属性sqlalchemy.engine.default.DefaultDialect.
default_isolation_level:IsolationLevelNone¶
隐式存在于新连接上的隔离
-
属性sqlalchemy.engine.default.DefaultDialect.
default_metavalue_token: str = 'DEFAULT'¶
对于 INSERT...VALUES (DEFAULT) 语法,要放在括号中的标记。
-
属性sqlalchemy.engine.default.DefaultDialect.
default_schema_name:strNone = None¶
默认架构的名称。此值仅适用于支持的方言,并且通常在与数据库的初始连接期间填充。
-
属性sqlalchemy.engine.default.DefaultDialect.
default_sequence_base: int = 1¶
将呈现为 CREATE SEQUENCE DDL 语句的 “START WITH” 部分的默认值。
-
属性sqlalchemy.engine.default.DefaultDialect.
delete_executemany_returning: bool = False¶
dialect 支持 DELETE..使用 executemany 返回。
-
属性sqlalchemy.engine.default.DefaultDialect.
delete_returning: bool = False¶
如果方言支持使用 DELETE 返回
2.0 版的新Function。
-
属性sqlalchemy.engine.default.DefaultDialect.
delete_returning_multifrom: bool = False¶
如果方言支持使用 DELETE 返回..从
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
denormalize_name(name)¶
如果 given name 是全小写名称,则将 given name 转换为后端的不区分大小写的标识符。
仅当方言定义 requires_name_normalize=True 时,才使用此方法。
-
属性sqlalchemy.engine.default.DefaultDialect.
div_is_floordiv: bool = True¶
Target 数据库将 / Division 运算符视为“楼层划分”
-
方法sqlalchemy.engine.default.DefaultDialect.
do_begin(dbapi_connection)¶
给定 DB-API 连接,提供connection.begin()
的实现。
DBAPI 没有专用的 “begin” 方法,并且预计事务是隐式的。此钩子是为那些可能需要此领域额外帮助的 DBAPI 提供的。
参数
dbapi_connection¶– 一个 DBAPI 连接,通常在ConnectionFairy
中代理。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_begin_twophase(connection: Connection, xid: Any)无 ¶
继承自Dialect
的Dialect.do_begin_twophase()
方法
在给定连接上开始两阶段事务。
参数
connection¶——一个 Connection
。xid¶ – xid
-
方法sqlalchemy.engine.default.DefaultDialect.
do_close(dbapi_connection)¶
给定 DBAPI 连接,提供connection.close()
的实现。
这个钩子被Pool
调用 当连接已 已从池中分离,或正在超出正常范围返回 池的容量。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_commit(dbapi_connection)¶
给定 DB-API 连接,提供connection.commit()
的实现。
参数
dbapi_connection¶– 一个 DBAPI 连接,通常在ConnectionFairy
中代理。
-
methodsqlalchemy.engine.default.DefaultDialect.
do_commit_twophase(connection: Connection, xid: Any, is_prepared: bool = True, recover: bool = False)无 ¶
继承自Dialect
的Dialect.do_commit_twophase()
方法
在给定连接上提交两阶段事务。
参数
connection¶——一个 Connection
。xid¶ – xid
is_prepared¶ – 无论TwoPhaseTransaction.prepare()
被调用。
recover¶——如果传递了 recover 标志。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_execute(cursor, statement, parameters, context=None)¶
提供cursor.execute(statement, parameters)
.
-
methodsqlalchemy.engine.default.DefaultDialect.
do_execute_no_params(cursor, statement, context=None)¶
提供cursor.execute(statement)
的实现。
不应发送 parameter collection。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_executemany(cursor, statement, parameters, context=None)¶
提供cursor.executemany(statement, parameters)
.
-
方法sqlalchemy.engine.default.DefaultDialect.
do_ping(dbapi_connection: DBAPIConnection)bool ¶
ping DBAPI 连接,如果连接可用,则返回 True。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_prepare_twophase(connection: Connection, xid: Any)无 ¶
继承自Dialect
的Dialect.do_prepare_twophase()
方法
在给定连接上准备一个两阶段事务。
参数
connection¶——一个 Connection
。xid¶ – xid
-
方法sqlalchemy.engine.default.DefaultDialect.
do_recover_twophase(connection: Connection)List[Any] ¶
继承自Dialect
的Dialect.do_recover_twophase()
方法
恢复给定连接上未提交的已准备好的两阶段事务标识符的列表。
参数
connection¶——一个 Connection
。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_release_savepoint(connection, name)¶
在连接上释放命名的 Savepoint。
参数
connection¶——一个 Connection
。
name¶- 保存点名称。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_rollback(dbapi_connection)¶
给定 DB-API 连接,提供connection.rollback()
的实现。
参数
dbapi_connection¶– 一个 DBAPI 连接,通常在ConnectionFairy
中代理。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_rollback_to_savepoint(connection, name)¶
回滚到命名 Savepoint 的连接。
参数
connection¶——一个 Connection
。
name¶- 保存点名称。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_rollback_twophase(connection: Connection, xid: Any, is_prepared: bool = True, recover: bool = False)无 ¶
继承自Dialect.do_rollback_twophase()
Dialect
的方法
在给定连接上回滚两阶段事务。
参数
connection¶——一个 Connection
。xid¶ – xid
is_prepared¶ – 无论TwoPhaseTransaction.prepare()
被调用。
recover¶——如果传递了 recover 标志。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_savepoint(connection, name)¶
创建具有给定名称的 Savepoint。
参数
connection¶——一个 Connection
。
name¶- 保存点名称。
-
methodsqlalchemy.engine.default.DefaultDialect.
do_set_input_sizes(游标:DBAPICursor,list_of_tuples:_GenericSetInputSizesType,上下文:ExecutionContext)Any ¶
继承自Dialect
的Dialect.do_set_input_sizes()
方法
使用适当的参数调用 cursor.setInputSizes() 方法
如果Dialect.bind_typing
属性为 设置为BindTyping.SETINPUTSIZES
值。参数数据以元组列表(paramname、dbtype、sqltype)的形式传递,其中paramname
是语句中参数的键,dbtype
是 DBAPI 数据类型,sqltype
是 SQLAlchemy 类型。元组的顺序是正确的参数顺序。
在 1.4 版本加入.
在 2.0 版更改: - 现在通过将Dialect.bind_typing
设置为接受
use_setinputsizes
参数的方言应适当地设置此值。
-
方法sqlalchemy.engine.default.DefaultDialect.
do_terminate(dbapi_connection)¶
提供connection.close()
的实现,在给定 DBAPI 连接的情况下,该实现会尽可能地不阻塞。
在绝大多数情况下,这只是调用 .close(),但是对于某些 asyncio dialects 可能会调用不同的 API 功能。
这个钩子被Pool
调用 当连接正在回收或已失效时。
在 1.4.41 版本加入.
-
属性sqlalchemy.engine.default.DefaultDialect.
驱动:str¶
方言的 DBAPI 的标识名称
-
属性sqlalchemy.engine.default.DefaultDialect.
engine_config_types: Mapping[str, Any] = {'echo': <函数 bool_or_str.<locals>.bool_or_value>, 'echo_pool': <函数 bool_or_str.<本地变量>.bool_or_value>, 'future': <函数别名>, 'max_overflow': <函数别名>, 'pool_recycle': <函数别名>, 'pool_size': <函数别名>, 'pool_timeout': <函数别名>}¶
字符串键的映射,可以位于链接到类型转换函数的引擎配置中。
-
类方法sqlalchemy.engine.default.DefaultDialect.
engine_created(engine: Engine)无 ¶
继承自Dialect
的Dialect.engine_created()
方法
在返回最终的发动机
。
如果 dialect 返回的类与get_dialect_cls()
方法,则钩子会在两个类上调用,首先在get_dialect_cls()
方法返回的 dialect 类,然后是调用该方法的类。
方言和/或包装器应使用 hook 将特殊事件应用于引擎或其组件。特别是,它允许 dialect-wrapping 类应用 dialect 级别的事件。
-
属性sqlalchemy.engine.default.DefaultDialect.
exclude_set_input_sizes:Set[Any]None = None¶
应在自动 cursor.setinputsizes() 调用中排除的 DBAPI 类型对象集。
仅当 bind_typing 为 BindTyping.SET_INPUT_SIZES 时,才使用此方法
-
属性sqlalchemy.engine.default.DefaultDialect.
execute_sequence_format¶ 元组
的别名
-
属性sqlalchemy.engine.default.DefaultDialect.
execution_ctx_cls¶
-
属性sqlalchemy.engine.default.DefaultDialect.
favor_returning_over_lastrowid: bool = False¶
对于同时支持 lastrowid 和 RETURNING 插入策略的后端,对于简单的单整数 pk 插入,首选 RETURNING。
cursor.lastrowid 在大多数后端上往往性能更高。
-
属性sqlalchemy.engine.default.DefaultDialect.
full_returning¶
2.0 版后已废弃: full_returning 已废弃,请使用 insert_returning、update_returning delete_returning
-
类方法sqlalchemy.engine.default.DefaultDialect.
get_async_dialect_cls(url: url)Type[方言] ¶
继承自Dialect.get_async_dialect_cls()
Dialect
的方法
给定一个 URL,返回异步引擎将使用的Dialect
。
默认情况下,这是Dialect.get_dialect_cls()
和 只返回 CLS。如果方言提供 同步版本和异步版本,如psycopg
驱动程序。
版本 2 的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_check_constraints(connection: Connection, table_name: str, schema:strNone=None, **kw: Any)List[ReflectedCheckConstraint] ¶
继承自Dialect.get_check_constraints()
Dialect
的方法
返回有关table_name
中的 check 约束的信息。
给定一个字符串table_name
和一个可选的字符串架构
,将 check 约束信息作为对应于ReflectedCheckConstraint
字典的字典列表返回。
这是一种内部方言方法。应用程序应使用Inspector.get_check_constraints()
。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_columns(connection: Connection, table_name: str, schema:strNone=None, **kw: Any)List[ReflectedColumn] ¶
继承自Dialect
的Dialect.get_columns()
方法。
返回有关table_name
中的列的信息。
给定一个Connection
,一个字符串table_name
和可选的字符串架构
,将列信息作为对应于ReflectedColumn
字典的字典列表返回。
这是一种内部方言方法。应用程序应使用Inspector.get_columns()
中。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_default_isolation_level(dbapi_conn)¶
给定 DBAPI 连接,返回其隔离级别,如果无法检索,则返回默认隔离级别。
可以被子类覆盖,以便为无法可靠地检索实际隔离级别的数据库提供“回退”隔离级别。
默认情况下,调用Interfaces.get_isolation_level()
方法,传播引发的任何异常。
在 1.3.22 版本加入.
-
类方法sqlalchemy.engine.default.DefaultDialect.
get_dialect_cls(url: url)Type[Dialect] ¶
继承自Dialect
的Dialect.get_dialect_cls()
方法
给定一个 URL,返回将使用的Dialect
。
这是一个钩子,它允许外部插件围绕现有方言提供功能,通过允许基于入口点从 url 加载插件,然后插件返回要使用的实际方言。
默认情况下,这只返回 cls.
-
方法sqlalchemy.engine.default.DefaultDialect.
get_dialect_pool_class(url: URL)Type[Pool] ¶
返回要用于给定 URL 的 Pool 类
-
方法sqlalchemy.engine.default.DefaultDialect.
get_driver_connection(连接)¶
返回外部驱动程序包返回的连接对象。
对于使用符合 DBAPI 的驱动程序的普通方言,此调用将仅返回作为参数传递的连接
。对于改为改编不符合 DBAPI 的驱动程序的方言,例如改编 asyncio 驱动程序时,此调用将返回驱动程序返回的类似连接的对象。
在 1.4.24 版本加入.
-
方法sqlalchemy.engine.default.DefaultDialect.
get_foreign_keys(connection: Connection, table_name: str, schema:strNone=None, **kw: Any)List[ReflectedForeignKeyConstraint] ¶
继承自Dialect
的Dialect.get_foreign_keys()
方法
在 table_name 中返回有关foreign_keys
的信息。
给定一个Connection
,一个字符串table_name
和可选的字符串架构
返回 foreign key information 作为对应于ReflectedForeignKeyConstraint
字典。
这是一种内部方言方法。应用程序应使用Inspector.get_foreign_keys()
中。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_indexes(connection: Connection, table_name: str, schema:strNone=None, **kw: Any)List[ReflectedIndex] ¶
继承自Dialect
的Dialect.get_indexes()
方法
返回有关table_name
中的索引的信息。
给定一个Connection
,一个字符串table_name
和可选的字符串架构
,则返回 index information 作为对应于ReflectedIndex
字典。
这是一种内部方言方法。应用程序应使用Inspector.get_indexes()
中。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_isolation_level(dbapi_connection: DBAPIConnection)Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT'] ¶
继承自Dialect
的Dialect.get_isolation_level()
方法。
给定 DBAPI 连接,返回其隔离级别。
使用Connection
对象时, 相应的 DBAPI 连接可以使用Connection.connection
访问器。
请注意,这是一个 dialect 级别的方法,用作Connection
和发动机
隔离级设施;对于大多数典型用例,应首选这些 API。
另请参阅
Connection.get_isolation_level()
- 查看当前级别
Connection.default_isolation_level
- 查看默认级别
Connection.execution_options.isolation_level
- 按连接
隔离级别设置create_engine.isolation_level
- 根据引擎
隔离级别设置
-
方法sqlalchemy.engine.default.DefaultDialect.
get_isolation_level_values(dbapi_conn: DBAPIConnection)List[Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']] ¶
继承自Dialect.get_isolation_level_values()
Dialect
的方法
返回此方言接受的字符串隔离级别名称序列。
可用名称应使用以下约定:
使用 UPPERCASE 名称。隔离级别方法将接受小写名称,但这些名称在传递给方言之前被规范化为 UPPERCASE。
单独的单词应该用空格分隔,而不是下划线,例如可重复读取
。隔离级别名称在传递给方言之前会将下划线转换为空格。
在后端支持的范围内,四个标准隔离名称的名称应为READ UNCOMMITTED
,READ COMMITTED,
REPEATABLE READ
,SERIALIZABLE
如果 dialect 支持 autocommit 选项,则应使用隔离级别名称AUTOCOMMIT
提供该选项。
也可能存在其他隔离模式,前提是它们以 UPPERCASE 命名并使用空格而不是下划线。
使用此功能是为了让默认方言可以检查 给定的隔离级别参数有效,否则会引发ArgumentError 的 Argument 错误
。
DBAPI 连接将传递给该方法,以防方言需要询问连接本身以确定此列表,但预计大多数后端将返回硬编码的值列表。如果方言支持 “AUTOCOMMIT”,则该值也应出现在返回的序列中。
默认情况下,该方法会引发NotImplementedError
。如果 dialect 没有实现此方法,则默认 dialect 在将给定的隔离级别值传递给Dialect.set_isolation_level()
方法之前不会对该值执行任何检查。这是为了允许与可能尚未实现此方法的第三方方言向后兼容。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_materialized_view_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
继承自Dialect.get_materialized_view_names()
Dialect
的方法
返回数据库中可用的所有具体化视图名称的列表。
这是一种内部方言方法。应用程序应使用Inspector.get_materialized_view_names()
.
参数
架构¶ –
要查询的 Schema Name(如果不是默认 Schema)。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_multi_check_constraints(connection, **kw)¶
返回有关给定架构
中所有表中的 check 约束的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_check_constraints()
。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法,Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_multi_columns(connection, **kw)¶
返回有关给定架构
中所有表中的列的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_columns()
中。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法,Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_multi_foreign_keys(connection, **kw)¶
返回有关给定架构
中所有表中foreign_keys的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_foreign_keys()
.
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法,Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_multi_indexes(connection, **kw)¶
返回有关给定架构
中所有表中的索引的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_indexes()
中。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法,Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_multi_pk_constraint(connection, **kw)¶
返回有关给定架构
中所有表中的主键约束的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_pk_constraint()
。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法,Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_multi_table_comment(connection, **kw)¶
返回有关给定架构
中所有表中的表注释的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_table_comment()
.
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法,Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_multi_table_options(connection, **kw)¶
返回在创建给定架构中的表时指定的选项字典。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_table_options()
.
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法,Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_multi_unique_constraints(connection, **kw)¶
返回有关给定架构
中所有表中唯一约束的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_unique_constraints()
。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法,Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_pk_constraint(connection: Connection, table_name: str, schema:strNone=None, **kw: Any)ReflectedPrimaryKeyConstraint ¶
继承自Dialect
的Dialect.get_pk_constraint()
方法
返回有关 table_name' 上的主键约束的信息。
给定一个Connection
,一个字符串table_name
和可选的字符串架构
返回 primary key 信息作为字典,对应于ReflectedPrimaryKeyConstraint
字典。
这是一种内部方言方法。应用程序应使用Inspector.get_pk_constraint()
中。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_schema_names(connection: Connection, **kw: Any)List[str] ¶
继承自Dialect
的Dialect.get_schema_names()
方法
返回数据库中所有可用的架构名称的列表。
这是一种内部方言方法。应用程序应使用Inspector.get_schema_names()
中。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_sequence_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
继承自Dialect
的Dialect.get_sequence_names()
方法。
返回数据库中所有可用的序列名称的列表。
这是一种内部方言方法。应用程序应使用Inspector.get_sequence_names()
.
参数
schema¶- 要查询的 schema 名称,如果不是默认 schema。
在 1.4 版本加入.
-
方法sqlalchemy.engine.default.DefaultDialect.
get_table_comment(connection: Connection, table_name: str, schema:strNone=None, **kw: Any)ReflectedTableComment ¶
继承自Dialect
的Dialect.get_table_comment()
方法
返回table_name
标识的表的 “comment”。
给定一个字符串table_name
和一个可选的字符串架构
,返回 table 注释信息作为对应的字典ReflectedTableComment
字典。
这是一种内部方言方法。应用程序应使用Inspector.get_table_comment()
中。
加注:NotImplementedError
对于不支持注释的方言。
在 1.2 版本加入.
-
方法sqlalchemy.engine.default.DefaultDialect.
get_table_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
继承自Dialect
的Dialect.get_table_names()
方法
返回schema
的表名列表。
这是一种内部方言方法。应用程序应使用Inspector.get_table_names()
中。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_table_options(connection: Connection, table_name: str, schema:strNone=None, **kw: Any)Dict[str, Any] ¶
继承自Dialect
的Dialect.get_table_options()
方法
返回table_name
时指定的选项字典 已创建。
这是一种内部方言方法。应用程序应使用Inspector.get_table_options()
中。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_temp_table_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
继承自Dialect.get_temp_table_names()
Dialect
的方法
返回给定连接上的临时表名列表(如果底层后端支持)。
这是一种内部方言方法。应用程序应使用Inspector.get_temp_table_names()
.
-
方法sqlalchemy.engine.default.DefaultDialect.
get_temp_view_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
继承自Dialect
的Dialect.get_temp_view_names()
方法
返回给定连接上的临时视图名称列表(如果底层后端支持)。
这是一种内部方言方法。应用程序应使用Inspector.get_temp_view_names()
.
-
方法sqlalchemy.engine.default.DefaultDialect.
get_unique_constraints(connection: Connection, table_name: str, schema:strNone=None, **kw: Any)List[ReflectedUniqueConstraint](列表[ReflectedUniqueConstraint]) ¶
继承自Dialect.get_unique_constraints()
Dialect
的方法
返回有关table_name
中唯一约束的信息。
给定一个字符串table_name
和一个可选的字符串架构
,以对应于ReflectedUniqueConstraint
字典的字典列表的形式返回唯一约束信息。
这是一种内部方言方法。应用程序应使用Inspector.get_unique_constraints()
。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_view_definition(connection: Connection, view_name: str, schema:strNone=None, **kw: Any)str ¶
继承自Dialect
的Dialect.get_view_definition()
方法
返回普通视图或具体化视图定义。
这是一种内部方言方法。应用程序应使用Inspector.get_view_definition()
.
给定一个Connection
,一个字符串view_name
和可选的字符串架构
返回视图定义。
-
方法sqlalchemy.engine.default.DefaultDialect.
get_view_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
继承自Dialect
的Dialect.get_view_names()
方法
返回数据库中所有可用的非具体化视图名称的列表。
这是一种内部方言方法。应用程序应使用Inspector.get_view_names()
中。
参数
schema¶- 要查询的 schema 名称,如果不是默认 schema。
-
方法sqlalchemy.engine.default.DefaultDialect.
has_index(connection, table_name, index_name, schema=None, **kw)¶
检查数据库中是否存在特定索引名称。
给定一个Connection
对象,一个字符串table_name
和字符串索引名称,如果给定表上存在给定名称的索引,则返回True
,否则返回False
。DefaultDialect
根据Dialect.has_table()
和Dialect.get_indexes()
方法,但是 dialects 可以实现性能更高的版本。
这是一种内部方言方法。应用程序应使用Inspector.has_index()
中。
在 1.4 版本加入.
-
方法sqlalchemy.engine.default.DefaultDialect.
has_schema(connection: Connection, schema_name: str, **kw: Any布尔 值¶
检查数据库中是否存在特定架构名称。
给定一个Connection
对象,一个字符串schema_name
,如果存在给定的架构,则返回True
,否则返回False
。DefaultDialect
通过检查返回的架构中是否存在schema_name
来实现这一点。Dialect.get_schema_names(),
但 dialects 可以实现性能更高的版本。
这是一种内部方言方法。应用程序应使用Inspector.has_schema()
中。
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
has_sequence(connection: Connection, sequence_name: str, schema:strNone=None, **kw: Any)bool ¶
继承自Dialect
的Dialect.has_sequence()
方法
检查数据库中是否存在特定序列。
给定一个Connection
对象和一个字符串 sequence_name,如果数据库中存在给定序列,则返回True
,否则返回False
。
这是一种内部方言方法。应用程序应使用Inspector.has_sequence()
中。
-
方法sqlalchemy.engine.default.DefaultDialect.
has_table(connection: Connection, table_name: str, schema:strNone=None, **kw: Any布尔 值¶
继承自Dialect
的Dialect.has_table()
方法。
对于内部方言的使用,请检查数据库中是否存在特定表或视图。
给定一个Connection
对象、一个字符串table_name和可选的架构名称,如果给定的表存在于数据库中,则返回 True,否则返回 False。
此方法用作面向公众的Inspector.has_table()
方法的底层实现,并且也被使用 在内部实现 “checkFirst” 行为,以便对Table.create()
和MetaData.create_all()
的 API 创建。
注意
此方法由 SQLAlchemy 在内部使用,并发布,以便第三方方言可以提供实现。它不是用于检查表存在的公共 API。请使用Inspector.has_table()
方法。
在 2.0 版本发生变更:Dialect.has_table()
现在正式支持检查其他类似表的对象:
任何类型的视图 (普通视图或实例化视图)
任何类型的临时表
以前,这两项检查没有正式指定,不同的方言的行为会有所不同。dialect 测试套件现在包括对所有这些对象类型的测试,并且 dialect 在后备数据库支持视图或临时表的程度上应寻求支持定位这些对象以实现完全合规性。
-
属性sqlalchemy.engine.default.DefaultDialect.
has_terminate: bool = False¶
此方言是否具有单独的 “terminate” 实现,该实现不会阻止或不需要等待。
-
属性sqlalchemy.engine.default.DefaultDialect.
identifier_preparer:IdentifierPreparer¶
此元素将引用IdentifierPreparer
的实例 一旦构造了DefaultDialect
。
-
类方法sqlalchemy.engine.default.DefaultDialect.
import_dbapi()模块 ¶
继承自Dialect
的Dialect.import_dbapi()
方法。
导入此方言使用的 DBAPI 模块。
此处返回的 Python 模块对象将被分配为 instance 变量转换为名称.dbapi
的
在 2.0 版更改:Dialect.import_dbapi()
类方法已从上一个方法重命名而来。Dialect.dbapi(),
它将在 dialect 实例化时被 DBAPI 模块本身替换,从而以两种不同的方式使用相同的名称。如果.Dialect.dbapi()
类方法存在于第三方方言上,则将使用它并发出弃用警告。
-
属性sqlalchemy.engine.default.DefaultDialect.
include_set_input_sizes:Set[Any]None = None¶
应包含在自动 cursor.setinputsizes() 调用中的 DBAPI 类型对象集。
仅当 bind_typing 为 BindTyping.SET_INPUT_SIZES 时,才使用此方法
-
方法sqlalchemy.engine.default.DefaultDialect.
initialize(connection)¶
在战略性创建具有连接的方言期间调用。
允许 dialect 根据服务器版本信息或其他属性配置选项。
此处传递的连接是一个 SQLAlchemy Connection 对象,具有完整的功能。
基本方言的 initialize() 方法应该通过 super() 调用。
注意
从 SQLAlchemy 1.4 开始,此方法在 任何Dialect.on_connect()
钩子都会被调用。
-
属性sqlalchemy.engine.default.DefaultDialect.
inline_comments: bool = False¶
指示方言支持与 Table 或 Column 的定义内联的注释 DDL。如果为 False,则表示必须使用 ALTER 来设置表和列注释。
-
属性sqlalchemy.engine.default.DefaultDialect.
insert_executemany_returning: bool¶
dialect / driver / database 支持一些提供 INSERT 的方法...使用 dialect.do_executemany() 时支持 RETURNING。
-
属性sqlalchemy.engine.default.DefaultDialect.
insert_executemany_returning_sort_by_parameter_order: bool¶
dialect / driver / database 支持一些提供 INSERT 的方法...RETURNING 支持(当 dialect.do_executemany() 与Insert.returning.sort_by_parameter_order
参数。
-
属性sqlalchemy.engine.default.DefaultDialect.
insert_returning: bool = False¶
如果方言支持带 INSERT 的 RETURNING
2.0 版的新Function。
-
属性sqlalchemy.engine.default.DefaultDialect.
insertmanyvalues_implicit_sentinel: InsertmanyvaluesSentinelOpts = symbol('NOT_SUPPORTED')¶
指示数据库支持批量 INSERT 形式的选项,其中自动递增整数主键可以可靠地用作 INSERTed 行的排序。
在 2.0.10 版本加入.
另请参阅
-
属性sqlalchemy.engine.default.DefaultDialect.
insertmanyvalues_max_parameters: int = 32700¶
Alternate to insertmanyvalues_page_size 将根据语句中的参数总数额外限制页面大小。
-
属性sqlalchemy.engine.default.DefaultDialect.
insertmanyvalues_page_size: int = 1000¶
要呈现到单个 INSERT 中的行数..VALUES() 语句进行ExecuteStyle.INSERTMANYVALUES
执行。
默认 dialect 默认为 1000。
2.0 版的新Function。
另请参阅
Connection.execution_options.insertmanyvalues_page_size
- 执行选项在Connection
、statements 上可用
-
属性sqlalchemy.engine.default.DefaultDialect.
is_async: bool = False¶
此方言是否用于 asyncio 。
-
方法sqlalchemy.engine.default.DefaultDialect.
is_disconnect(e, connection, cursor)¶
如果给定的 DB-API 错误指示连接无效,则返回 True
-
属性sqlalchemy.engine.default.DefaultDialect.
label_length:intNone¶
可选的用户定义的 SQL 标签最大长度
-
类方法sqlalchemy.engine.default.DefaultDialect.
load_provisioning()¶
为此方言设置 provision.py 模块。
对于包含设置 provisioning followers 的 provision.py 模块的方言,此方法应启动该过程。
典型的实现方式是:@classmethod def load_provisioning(cls): __import__("mydialect.provision")
默认方法根据__module__
假定当前方言的 owning 包中名为provision.py
的模块 属性:@classmethod def load_provisioning(cls): package = ".".join(cls.__module__.split(".")[0:-1]) try: __import__(package + ".provision") except ImportError: pass
在 1.3.14 版本加入.
-
属性sqlalchemy.engine.default.DefaultDialect.
loaded_dbapi¶
-
属性sqlalchemy.engine.default.DefaultDialect.
max_identifier_length: int = 9999¶
标识符名称的最大长度。
-
属性sqlalchemy.engine.default.DefaultDialect.
名称: str = 'default'¶
从 DBAPI 中立的角度识别方言的名称(即 'sqlite')
-
方法sqlalchemy.engine.default.DefaultDialect.
normalize_name(name)¶
如果检测到 given name 不区分大小写,则将其转换为 lowercase。
仅当方言定义 requires_name_normalize=True 时,才使用此方法。
-
方法sqlalchemy.engine.default.DefaultDialect.
on_connect()¶
返回一个可调用对象,用于设置新创建的 DBAPI 连接。
可调用对象应接受单个参数 “conn”,该参数是 DBAPI 连接本身。内部可调用对象没有返回值。
例如:class MyDialect(default.DefaultDialect): # ... def on_connect(self): def do_on_connect(connection): connection.execute("SET SPECIAL FLAGS etc") return do_on_connect
这用于设置方言范围的 per-connection 选项,例如隔离模式、Unicode 模式等。
“do_on_connect” 可调用对象通过使用PoolEvents.connect()
事件钩子,然后解包DBAPI连接并将其传递给可调用对象。
在 1.4 版本发生变更: on_connect 钩子不再为方言的第一个连接调用两次。但是,on_connect 钩子仍然在Dialect.initialize()
方法之前调用。
在 1.4.3 版本发生变更: on_connect 钩子是从一个新的方法 on_connect_url 调用的,该方法传递用于创建 connect args 的 URL。如果 Dialect 需要用于连接的 URL 对象来获取其他上下文,则可以实现 on_connect_url 而不是 on_connect。
如果返回 None,则不生成事件监听器。
结果
接受单个 DBAPI 连接作为参数的可调用对象,或 None。
另请参阅Dialect.connect()
- 允许控制 DBAPIconnect()
序列本身。Dialect.on_connect_url()
- 取代Dialect.on_connect()
来接收URL
对象。
-
方法sqlalchemy.engine.default.DefaultDialect.
on_connect_url(url: URL)→Callable[[Any],Any]无¶
继承自Dialect
的Dialect.on_connect_url()
方法。
返回一个可调用对象,用于设置新创建的 DBAPI 连接。
此方法是一个新钩子,它取代了Dialect.on_connect()
方法(当由 方言。 当未由 dialect 实现时,它会调用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
这用于设置方言范围的 per-connection 选项,例如隔离模式、Unicode 模式等。
此方法与Dialect.on_connect()
的不同之处在于,它传递的是与connect args 的 ARM。 通常,获取此 API 的唯一方法是从
Dialect.on_connect()
钩子是查看Engine
本身,但是此 URL 对象可能已替换为插件。
注意
的默认实现Dialect.on_connect_url()
用于调用Dialect.on_connect()
方法。因此,如果方言实现了此方法,则 Dialect.on_connect()
method 不会被调用,除非覆盖的 dialect 直接从这里调用它。
在 1.4.3 版本加入: 添加了Dialect.on_connect_url()
它通常调用Dialect.on_connect()
。
参数
url¶—— 一个URL
对象,代表传递给
Dialect.create_connect_args()
方法。
结果
接受单个 DBAPI 连接作为参数的可调用对象,或 None。
另请参阅
-
attributesqlalchemy.engine.default.DefaultDialect.
paramstyle: str¶
要使用的 paramstyle(某些 DB-API 支持多个 paramstyle)。
-
属性sqlalchemy.engine.default.DefaultDialect.
positional: bool¶
如果此 Dialect 的 paramstyle 是位置 true。
-
属性sqlalchemy.engine.default.DefaultDialect.
preexecute_autoincrement_sequences: bool = False¶
如果 'implicit' 主键函数必须单独执行才能获取其值,则为 True,如果未使用 RETURNING。
目前,这是面向 PostgreSQL 的,当implicit_returning=False
参数用于Table
对象。
-
属性sqlalchemy.engine.default.DefaultDialect.
reflection_options: Sequence[str] = ()¶
继承自Dialect
的Dialect.reflection_options
属性
字符串名称序列,指示可以在Table
对象上建立的关键字参数,当使用Table.autoload_with
时,该参数将作为 “反射选项” 传递。
当前示例是 Oracle Database 方言中的“oracle_resolve_synonyms”。
-
方法sqlalchemy.engine.default.DefaultDialect.
reset_isolation_level(dbapi_conn)¶
给定 DBAPI 连接,将其隔离恢复为默认值。
请注意,这是一个 dialect 级别的方法,用作Connection
和发动机
隔离级设施;这些 API 应优先用于 最典型的用例。
另请参阅
Connection.get_isolation_level()
- 查看当前级别
Connection.default_isolation_level
- 查看默认级别
Connection.execution_options.isolation_level
- 按连接
隔离级别设置create_engine.isolation_level
- 根据引擎
隔离级别设置
-
属性sqlalchemy.engine.default.DefaultDialect.
returns_native_bytes: bool = False¶
指示 Python bytes() 对象是否由 SQL“二进制”数据类型的驱动程序本地返回。
2.0.11 版本的新Function。
-
属性sqlalchemy.engine.default.DefaultDialect.
sequences_optional: bool = False¶
如果为 True,则指示Sequence.optional
参数应发出信号,表示不生成 CREATE SEQUENCE。仅适用于支持序列的方言。当前仅用于允许 PostgreSQL SERIAL 在指定 Sequence() 用于其他后端的列上使用。
-
属性sqlalchemy.engine.default.DefaultDialect.
server_side_cursors: bool = False¶
荒废的;指示 dialect 是否应默认尝试使用服务器端游标
-
属性sqlalchemy.engine.default.DefaultDialect.
server_version_info:Tuple[Any,...]无 = 无¶
一个元组,其中包含正在使用的数据库后端的版本号。
此值仅适用于支持的方言,并且通常在与数据库的初始连接期间填充。
-
方法sqlalchemy.engine.default.DefaultDialect.
set_connection_execution_options(connection: Connection, opts: Mapping[str, Any])没有 ¶
为给定连接建立执行选项。
这是由DefaultDialect
实现的,以便实现Connection.execution_options.isolation_level
执行选项。 Dialect 可以拦截各种执行选项 这可能需要修改特定 DBAPI 连接上的状态。
在 1.4 版本加入.
-
方法sqlalchemy.engine.default.DefaultDialect.
set_engine_execution_options(engine: Engine, opts: Mapping[str, Any])无 ¶
为给定引擎建立执行选项。
这是由DefaultDialect
实现的,用于为给定Engine
创建的新Connection
实例建立事件钩子,然后调用Dialect.set_connection_execution_options()
方法。
-
方法sqlalchemy.engine.default.DefaultDialect.
set_isolation_level(dbapi_connection: DBAPIConnection, 级别: Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT'])无 ¶
继承自Dialect
的Dialect.set_isolation_level()
方法
给定 DBAPI 连接,设置其隔离级别。
请注意,这是一个 dialect 级别的方法,用作Connection
和发动机
隔离级设施;这些 API 应优先用于 最典型的用例。
如果 dialect 还实现了Dialect.get_isolation_level_values()
方法,则保证给定的级别是该序列中的字符串名称之一,并且该方法不需要预料到查找失败。
另请参阅
Connection.get_isolation_level()
- 查看当前级别
Connection.default_isolation_level
- 查看默认级别
Connection.execution_options.isolation_level
- 按连接
隔离级别设置create_engine.isolation_level
- 根据引擎
隔离级别设置
-
属性sqlalchemy.engine.default.DefaultDialect.
statement_compiler¶ SQLCompiler
的别名
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_alter: bool = True¶
如果数据库支持ALTER TABLE
,则为 True
,仅用于在某些情况下生成外键约束
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_comments: bool = False¶
表示 dialect 支持对表和列进行注释 DDL。
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_constraint_comments: bool = False¶
指示方言是否支持对约束的注释 DDL。
2.0 版的新Function。
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_default_metavalue: bool = False¶
dialect 支持 INSERT...VALUES (DEFAULT) 语法
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_default_values: bool = False¶
dialect 支持 INSERT...DEFAULT VALUES 语法
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_empty_insert: bool = True¶
dialect 支持 INSERT () VALUES ()
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_identity_columns: bool = False¶
目标数据库支持 IDENTITY
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_multivalues_insert: bool = False¶
Target 数据库支持 INSERT...具有多个值集的 VALUES,即 INSERT INTO table (cols) VALUES (...), (...), (...), ...
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_native_boolean: bool = False¶
指示方言是否支持本机布尔构造。这将防止Boolean
在使用该类型时生成 CHECK 约束。
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_native_decimal: bool = False¶
指示是否为精度数字类型处理和返回 Decimal 对象,或者是否返回浮点数
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_native_enum: bool = False¶
指示方言是否支持本机 ENUM 构造。这将防止Enum
在 “native” 模式下使用该类型时生成 CHECK 约束。
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_native_uuid: bool = False¶
指示 Python UUID() 对象是否由 SQL UUID 数据类型的驱动程序本机处理。
2.0 版的新Function。
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_sane_multi_rowcount: bool = True¶
指示方言是否正确实现了UPDATE
和DELETE
语句。
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_sane_rowcount: bool = True¶
指示方言是否正确实现了UPDATE
和DELETE
语句。
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_sane_rowcount_returning¶
如果此方言支持合理的行计数,则为 True,即使正在使用 RETURNING。
对于不支持 RETURNING 的方言,这与supports_sane_rowcount
。
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_sequences: bool = False¶
指示方言是否支持 CREATE SEQUENCE 或类似内容。
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_server_side_cursors: bool = False¶
指示 dialect 是否支持服务器端游标
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_simple_order_by_label: bool = True¶
目标数据库支持 ORDER BY <labelname>,其中 <labelname> 引用 SELECT 的 columns 子句中的标签
-
属性sqlalchemy.engine.default.DefaultDialect.
supports_statement_cache: bool = True¶
指示此方言是否支持缓存。
所有与语句缓存兼容的方言都应直接在支持它的每个方言类和子类上将此标志设置为 True。SQLAlchemy 在使用语句缓存之前测试此标志是否本地存在于每个 dialect 子类上。这是为了为尚未完全测试符合 SQL 语句缓存的旧方言或新方言提供安全性。
在 1.4.5 版本加入.
另请参阅
-
属性sqlalchemy.engine.default.DefaultDialect.
tuple_in_values: bool = False¶
目标数据库支持元组 IN,即 (x, y) IN ((q, p), (r, z))
-
属性sqlalchemy.engine.default.DefaultDialect.
type_compiler: Any¶
遗产;这是类级别的 TypeCompiler 类,实例级别的 TypeCompiler 实例。
请改用 type_compiler_instance。
-
属性sqlalchemy.engine.default.DefaultDialect.
type_compiler_cls¶
-
属性sqlalchemy.engine.default.DefaultDialect.
type_compiler_instance:TypeCompiler¶
用于编译 SQL 类型对象的Compiled
类的实例
2.0 版的新Function。
-
方法sqlalchemy.engine.default.DefaultDialect.
type_descriptor(typeobj))¶
给定来自 types 模块的泛型对象,提供特定于数据库的TypeEngine
对象。
此方法查找名为colspecs
作为类或实例级变量,并传递给adapt_type()。
-
属性sqlalchemy.engine.default.DefaultDialect.
update_executemany_returning: bool = False¶
dialect 支持 UPDATE..使用 executemany 返回。
-
属性sqlalchemy.engine.default.DefaultDialect.
update_returning: bool = False¶
如果方言支持使用 UPDATE 返回
2.0 版的新Function。
-
属性sqlalchemy.engine.default.DefaultDialect.
update_returning_multifrom: bool = False¶
如果方言支持使用 UPDATE 返回..从
2.0 版的新Function。
-
属性sqlalchemy.engine.default.DefaultDialect.
use_insertmanyvalues: bool = False¶
如果为 True,则表示应使用“insertmanyvalues”功能来允许insert_executemany_returning
行为(如果可能)。
在实践中,将此设置为 True 意味着:
如果supports_multivalues_insert
,则 insert_returning
和use_insertmanyvalues
均为 True,则 SQL 编译器将生成一个 INSERT,该 INSERT 将由DefaultDialect
解释 作为ExecuteStyle.INSERTMANYVALUES
执行,它允许通过重写单行 INSERT 语句来使用 RETURN 对多行执行 INSERT,使其具有多个 VALUES 子句,并在给定大量行时为一系列批处理多次执行该语句。
默认方言的参数为 False,默认方言的参数设置为 True SQL炼金术内部方言 SQLite、MySQL/MariaDB、PostgreSQL、SQL Server。 对于 Oracle Database,它仍然为 False,它提供原生的 “executemany 与 RETURNING“支持,也不支持supports_multivalues_insert
。 对于 MySQL/MariaDB,那些 MySQL 方言 不支持 RETURNING 的将不会报告insert_executemany_returning
为 True。
2.0 版的新Function。
-
属性sqlalchemy.engine.default.DefaultDialect.
use_insertmanyvalues_wo_returning: bool = False¶
如果为 True,并且 use_insertmanyvalues 也是 True,则不包含 RETURNING 的 INSERT 语句也将使用 “insertmanyvalues”。
2.0 版的新Function。
-
-
类 sqlalchemy.engine 中。方言¶
定义特定数据库和 DB-API 组合的行为。
元数据定义、SQL 查询生成、执行、结果集处理或数据库之间变化的任何其他方面都定义在 Dialect 的一般类别下。Dialect 充当其他特定于数据库的对象实现的工厂,包括 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()、驱动程序、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、名称、normalize_name()、 on_connect(), on_connect_url(), paramstyle, 位置, preexecute_autoincrement_sequences, 准备者, 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
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
bind_typing = 1¶
定义一种将类型信息传递给 Bound 参数的数据库和/或 driver 的方法。
有关值,请参阅BindTyping
。
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
colspecs: MutableMapping[Type[TypeEngine[Any]], Type[TypeEngine[Any]]]¶
来自 sqlalchemy.types 的 TypeEngine 类的字典,映射到特定于 dialect 类的子类。此字典只是类级别的,不能从 dialect 实例本身访问。
-
方法sqlalchemy.engine.Dialect 中。
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()
函数。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
construct_arguments:List[Tuple[Type[SchemaItemClauseElement],Mapping[str,Any]]]None = None¶
用于各种 SQLAlchemy 构造(通常是架构项)的可选参数说明符集。
要实现,请建立为一系列 Tuples,如下所示:construct_arguments = [ (schema.Index, {"using": False, "where": None, "ops": None}), ]
如果上述构造是在 PostgreSQL 方言上建立的,则 Index
构造现在将接受关键字参数postgresql_using
,postgresql_where
, nadpostgresql_ops
.指定给Index
的构造函数的任何其他参数 前缀为postgresql_
将引发ArgumentError
。
不包含construct_arguments
成员的方言将不参与参数验证系统。对于此类方言,任何参数名称都由所有参与的构造接受,在以该方言名称为前缀的参数命名空间内。这里的基本原理是,尚未实现此功能的第三方方言可以继续以旧方式运行。
另请参阅
-
方法sqlalchemy.engine.Dialect 中。
create_connect_args(url: url)ConnectArgsType ¶
构建与 DB-API 兼容的连接参数。
给定一个URL
对象,返回一个由适合直接发送的(*args, **kwargs)
组成的元组 添加到 dbapi 的 connect 函数中。 参数将发送到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)
参数
结果
一个(*args, **kwargs)
的元组,它将传递给Dialect.connect()
方法。
-
方法sqlalchemy.engine.Dialect 中。
create_xid()Any ¶
创建两阶段交易 ID。
此 ID 将传递给 do_begin_twophase()、do_rollback_twophase()、do_commit_twophase()。其格式未指定。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
cte_follows_insert: bool¶
目标数据库,当给定带有 INSERT 语句的 CTE 时,CTE 需要低于 INSERT
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
dbapi:ModuleTypeNone¶
对 DBAPI 模块对象本身的引用。
SQLAlchemy dialects 使用 classmethod 导入 DBAPI 模块Dialect.import_dbapi()
中。基本原理是,任何方言 模块可以导入并用于生成 SQL 语句,而无需 需要安装实际的 DBAPI 驱动程序。 仅当Engine
是使用create_engine()
构建的,才会导入 DBAPI;此时,创建过程会将 DBAPI 模块分配给此属性。
因此,方言应该实现Dialect.import_dbapi()
它将导入必要的模块并返回它,然后引用 到方言代码中的self.dbapi
中引用 DBAPI 模块内容。
版本更改:Dialect.dbapi
属性专门用作对 DBAPI 模块的每个Dialect
实例的引用。上一个未完全记录的.Dialect.dbapi()
classmethod 已弃用,取而代之的是Dialect.import_dbapi()。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
dbapi_exception_translation_map: 映射[str, str] = {}¶
一个名称字典,将包含与备用类名称键控的 pep-249 异常的名称(“IntegrityError”、“OperationalError”等)作为值,以支持 DBAPI 具有未按引用方式命名的异常类的情况(例如 IntegrityError = MyException)。在绝大多数情况下,此字典是空的。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
ddl_compiler: Type[DDLCompiler]¶
用于编译 DDL 语句的Compiled
类
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
default_isolation_level:IsolationLevelNone¶
隐式存在于新连接上的隔离
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
default_metavalue_token: str = 'DEFAULT'¶
对于 INSERT...VALUES (DEFAULT) 语法,要放在括号中的标记。
例如,对于 SQLite,这是关键字 “NULL”。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
default_schema_name:strNone¶
默认架构的名称。此值仅适用于支持的方言,并且通常在与数据库的初始连接期间填充。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
default_sequence_base: int¶
将呈现为 CREATE SEQUENCE DDL 语句的 “START WITH” 部分的默认值。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
delete_executemany_returning: bool¶
dialect 支持 DELETE..使用 executemany 返回。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
delete_returning: bool (布尔值)¶
如果方言支持使用 DELETE 返回
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
delete_returning_multifrom: bool¶
如果方言支持使用 DELETE 返回..从
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
denormalize_name(name: str)str ¶
如果 given name 是全小写名称,则将 given name 转换为后端的不区分大小写的标识符。
仅当方言定义 requires_name_normalize=True 时,才使用此方法。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
div_is_floordiv: bool (布尔值)¶
Target 数据库将 / Division 运算符视为“楼层划分”
-
方法sqlalchemy.engine.Dialect 中。
do_begin(dbapi_connection: PoolProxiedConnection)无 ¶
给定 DB-API 连接,提供connection.begin()
的实现。
DBAPI 没有专用的 “begin” 方法,并且预计事务是隐式的。此钩子是为那些可能需要此领域额外帮助的 DBAPI 提供的。
参数
dbapi_connection¶– 一个 DBAPI 连接,通常在ConnectionFairy
中代理。
-
方法sqlalchemy.engine.Dialect 中。
do_begin_twophase(connection: Connection, xid: Any)无 ¶
在给定连接上开始两阶段事务。
参数
connection¶——一个 Connection
。xid¶ – xid
-
方法sqlalchemy.engine.Dialect 中。
do_close(dbapi_connection: DBAPIConnection)无 ¶
给定 DBAPI 连接,提供connection.close()
的实现。
这个钩子被Pool
调用 当连接已 已从池中分离,或正在超出正常范围返回 池的容量。
-
方法sqlalchemy.engine.Dialect 中。
do_commit(dbapi_connection: PoolProxiedConnection)无 ¶
给定 DB-API 连接,提供connection.commit()
的实现。
参数
dbapi_connection¶– 一个 DBAPI 连接,通常在ConnectionFairy
中代理。
-
方法sqlalchemy.engine.Dialect 中。
do_commit_twophase(connection: 连接, xid: 任意, is_prepared: bool = True, recover: bool = False)无 ¶
在给定连接上提交两阶段事务。
参数
connection¶——一个 Connection
。xid¶ – xid
is_prepared¶ – 无论TwoPhaseTransaction.prepare()
被调用。
recover¶——如果传递了 recover 标志。
-
方法sqlalchemy.engine.Dialect 中。
do_execute(cursor: DBAPICursor, statement: str, parameters:Sequence[Any]Mapping[str,Any]None, context:ExecutionContextNone=None)无 ¶
提供cursor.execute(statement, parameters)
.
-
方法sqlalchemy.engine.Dialect 中。
do_execute_no_params(cursor: DBAPICursor, statement: str, context:ExecutionContextNone=None)无 ¶
提供cursor.execute(statement)
的实现。
不应发送 parameter collection。
-
方法sqlalchemy.engine.Dialect 中。
do_executemany(cursor: DBAPICursor, statement: str, parameters:Sequence[Sequence[Any]]Sequence[Mapping[str,Any]], context:ExecutionContextNone=None)无 ¶
提供cursor.executemany(statement, parameters)
.
-
方法sqlalchemy.engine.Dialect 中。
do_ping(dbapi_connection: DBAPIConnection)bool ¶
ping DBAPI 连接,如果连接可用,则返回 True。
-
方法sqlalchemy.engine.Dialect 中。
do_prepare_twophase(connection: Connection, xid: Any)无 ¶
在给定连接上准备一个两阶段事务。
参数
connection¶——一个 Connection
。xid¶ – xid
-
方法sqlalchemy.engine.Dialect 中。
do_recover_twophase(connection: 连接)列表[任意] ¶
恢复给定连接上未提交的已准备好的两阶段事务标识符的列表。
参数
connection¶——一个 Connection
。
-
方法sqlalchemy.engine.Dialect 中。
do_release_savepoint(connection: Connection, name: str)无 ¶
在连接上释放命名的 Savepoint。
参数
connection¶——一个 Connection
。
name¶- 保存点名称。
-
方法sqlalchemy.engine.Dialect 中。
do_rollback(dbapi_connection: PoolProxiedConnection)无 ¶
给定 DB-API 连接,提供connection.rollback()
的实现。
参数
dbapi_connection¶– 一个 DBAPI 连接,通常在ConnectionFairy
中代理。
-
方法sqlalchemy.engine.Dialect 中。
do_rollback_to_savepoint(connection: Connection, name: str)无 ¶
回滚到命名 Savepoint 的连接。
参数
connection¶——一个 Connection
。
name¶- 保存点名称。
-
方法sqlalchemy.engine.Dialect 中。
do_rollback_twophase(connection: 连接, xid: 任意, is_prepared: bool = True, 恢复: bool = False)无 ¶
在给定连接上回滚两阶段事务。
参数
connection¶——一个 Connection
。xid¶ – xid
is_prepared¶ – 无论TwoPhaseTransaction.prepare()
被调用。
recover¶——如果传递了 recover 标志。
-
方法sqlalchemy.engine.Dialect 中。
do_savepoint(connection: Connection, name: str)无 ¶
创建具有给定名称的 Savepoint。
参数
connection¶——一个 Connection
。
name¶- 保存点名称。
-
方法sqlalchemy.engine.Dialect 中。
do_set_input_sizes(光标:DBAPICursor,list_of_tuples:_GenericSetInputSizesType,上下文:ExecutionContext)任何 ¶
使用适当的参数调用 cursor.setInputSizes() 方法
如果Dialect.bind_typing
属性为 设置为BindTyping.SETINPUTSIZES
值。参数数据以元组列表(paramname、dbtype、sqltype)的形式传递,其中paramname
是语句中参数的键,dbtype
是 DBAPI 数据类型,sqltype
是 SQLAlchemy 类型。元组的顺序是正确的参数顺序。
在 1.4 版本加入.
在 2.0 版更改: - 现在通过将Dialect.bind_typing
设置为接受
use_setinputsizes
参数的方言应适当地设置此值。
-
方法sqlalchemy.engine.Dialect 中。
do_terminate(dbapi_connection: DBAPIConnection)无 ¶
提供connection.close()
的实现,在给定 DBAPI 连接的情况下,该实现会尽可能地不阻塞。
在绝大多数情况下,这只是调用 .close(),但是对于某些 asyncio dialects 可能会调用不同的 API 功能。
这个钩子被Pool
调用 当连接正在回收或已失效时。
在 1.4.41 版本加入.
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
驱动:str¶
方言的 DBAPI 的标识名称
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
engine_config_types: Mapping[str, Any]¶
字符串键的映射,可以位于链接到类型转换函数的引擎配置中。
-
类方法sqlalchemy.engine.Dialect 的 Dialect 中。
engine_created(engine: Engine)无 ¶
在返回最终的发动机
。
如果 dialect 返回的类与get_dialect_cls()
方法,则钩子会在两个类上调用,首先在get_dialect_cls()
方法返回的 dialect 类,然后是调用该方法的类。
方言和/或包装器应使用 hook 将特殊事件应用于引擎或其组件。特别是,它允许 dialect-wrapping 类应用 dialect 级别的事件。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
exclude_set_input_sizes:Set[Any]无¶
应在自动 cursor.setinputsizes() 调用中排除的 DBAPI 类型对象集。
仅当 bind_typing 为 BindTyping.SET_INPUT_SIZES 时,才使用此方法
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
execute_sequence_format:type[元组[Any,...]]类型[Tuple[List[Any]]]¶
'tuple' 或 'list' 类型,取决于 cursor.execute() 接受的第二个参数(它们各不相同)。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
execution_ctx_cls: Type[ExecutionContext]¶
用于处理语句执行的ExecutionContext
类
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
favor_returning_over_lastrowid: bool¶
对于同时支持 lastrowid 和 RETURNING 插入策略的后端,对于简单的单整数 pk 插入,首选 RETURNING。
cursor.lastrowid 在大多数后端上往往性能更高。
-
类方法sqlalchemy.engine.Dialect 的 Dialect 中。
get_async_dialect_cls(url: url)类型[方言] ¶
给定一个 URL,返回异步引擎将使用的Dialect
。
默认情况下,这是Dialect.get_dialect_cls()
和 只返回 CLS。如果方言提供 同步版本和异步版本,如psycopg
驱动程序。
版本 2 的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_check_constraints(connection: 连接, table_name: str, schema:strNone=None, **kw: Any)列表[ReflectedCheckConstraint] ¶
返回有关table_name
中的 check 约束的信息。
给定一个字符串table_name
和一个可选的字符串架构
,将 check 约束信息作为对应于ReflectedCheckConstraint
字典的字典列表返回。
这是一种内部方言方法。应用程序应使用Inspector.get_check_constraints()
。
-
方法sqlalchemy.engine.Dialect 中。
get_columns(connection: 连接, table_name: str, schema:strNone=None, **kw: Any)列表[反射柱] ¶
返回有关table_name
中的列的信息。
给定一个Connection
,一个字符串table_name
和可选的字符串架构
,将列信息作为对应于ReflectedColumn
字典的字典列表返回。
这是一种内部方言方法。应用程序应使用Inspector.get_columns()
中。
-
方法sqlalchemy.engine.Dialect 中。
get_default_isolation_level(dbapi_conn: DBAPIConnection)Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', '读取未提交', '自动提交'] ¶
给定 DBAPI 连接,返回其隔离级别,如果无法检索,则返回默认隔离级别。
此方法可能只会引发 NotImplementedError 和 不得引发任何其他异常,因为它在第一次连接时隐式使用。
该方法必须返回支持隔离级别设置的方言的值,因为当对每个连接进行隔离级别更改时,此级别将恢复为该级别。
该方法默认使用Dialect.get_isolation_level()
方法,除非被方言覆盖。
在 1.3.22 版本加入.
-
类方法sqlalchemy.engine.Dialect 的 Dialect 中。
get_dialect_cls(url: url)类型[方言] ¶
给定一个 URL,返回将使用的Dialect
。
这是一个钩子,它允许外部插件围绕现有方言提供功能,通过允许基于入口点从 url 加载插件,然后插件返回要使用的实际方言。
默认情况下,这只返回 cls.
-
方法sqlalchemy.engine.Dialect 中。
get_dialect_pool_class(url: url)Type[矿池] ¶
返回要用于给定 URL 的 Pool 类
-
方法sqlalchemy.engine.Dialect 中。
get_driver_connection(连接:DBAPIConnection)Any ¶
返回外部驱动程序包返回的连接对象。
对于使用符合 DBAPI 的驱动程序的普通方言,此调用将仅返回作为参数传递的连接
。对于改为改编不符合 DBAPI 的驱动程序的方言,例如改编 asyncio 驱动程序时,此调用将返回驱动程序返回的类似连接的对象。
在 1.4.24 版本加入.
-
方法sqlalchemy.engine.Dialect 中。
get_foreign_keys(connection: 连接, table_name: str, schema:strNone=None, **kw: Any)列表[ReflectedForeignKeyConstraint] ¶
在 table_name 中返回有关foreign_keys
的信息。
给定一个Connection
,一个字符串table_name
和可选的字符串架构
返回 foreign key information 作为对应于ReflectedForeignKeyConstraint
字典。
这是一种内部方言方法。应用程序应使用Inspector.get_foreign_keys()
中。
-
方法sqlalchemy.engine.Dialect 中。
get_indexes(connection: 连接, table_name: str, schema:strNone=None, **kw: Any)列表[反射索引] ¶
返回有关table_name
中的索引的信息。
给定一个Connection
,一个字符串table_name
和可选的字符串架构
,则返回 index information 作为对应于ReflectedIndex
字典。
这是一种内部方言方法。应用程序应使用Inspector.get_indexes()
中。
-
方法sqlalchemy.engine.Dialect 中。
get_isolation_level(dbapi_connection: DBAPIConnection)Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', '读取未提交', '自动提交'] ¶
给定 DBAPI 连接,返回其隔离级别。
使用Connection
对象时, 相应的 DBAPI 连接可以使用Connection.connection
访问器。
请注意,这是一个 dialect 级别的方法,用作Connection
和发动机
隔离级设施;对于大多数典型用例,应首选这些 API。
另请参阅
Connection.get_isolation_level()
- 查看当前级别
Connection.default_isolation_level
- 查看默认级别
Connection.execution_options.isolation_level
- 按连接
隔离级别设置create_engine.isolation_level
- 根据引擎
隔离级别设置
-
方法sqlalchemy.engine.Dialect 中。
get_isolation_level_values(dbapi_conn: DBAPIConnection)List[Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']] ¶
返回此方言接受的字符串隔离级别名称序列。
可用名称应使用以下约定:
使用 UPPERCASE 名称。隔离级别方法将接受小写名称,但这些名称在传递给方言之前被规范化为 UPPERCASE。
单独的单词应该用空格分隔,而不是下划线,例如可重复读取
。隔离级别名称在传递给方言之前会将下划线转换为空格。
在后端支持的范围内,四个标准隔离名称的名称应为READ UNCOMMITTED
,READ COMMITTED,
REPEATABLE READ
,SERIALIZABLE
如果 dialect 支持 autocommit 选项,则应使用隔离级别名称AUTOCOMMIT
提供该选项。
也可能存在其他隔离模式,前提是它们以 UPPERCASE 命名并使用空格而不是下划线。
使用此功能是为了让默认方言可以检查 给定的隔离级别参数有效,否则会引发ArgumentError 的 Argument 错误
。
DBAPI 连接将传递给该方法,以防方言需要询问连接本身以确定此列表,但预计大多数后端将返回硬编码的值列表。如果方言支持 “AUTOCOMMIT”,则该值也应出现在返回的序列中。
默认情况下,该方法会引发NotImplementedError
。如果 dialect 没有实现此方法,则默认 dialect 在将给定的隔离级别值传递给Dialect.set_isolation_level()
方法之前不会对该值执行任何检查。这是为了允许与可能尚未实现此方法的第三方方言向后兼容。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_materialized_view_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
返回数据库中可用的所有具体化视图名称的列表。
这是一种内部方言方法。应用程序应使用Inspector.get_materialized_view_names()
.
参数
架构¶ –
要查询的 Schema Name(如果不是默认 Schema)。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_multi_check_constraints(connection: Connection, *, schema:strNone=None, filter_names:Collection[str]None=None, **kw: Any)Iterable[元组[TableKey, List[ReflectedCheckConstraint]]]¶
返回有关给定架构
中所有表中的 check 约束的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_check_constraints()
。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法。Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_multi_columns(connection: Connection, *, schema:strNone=None, filter_names:Collection[str]None=None, **kw: Any)Iterable[元组[TableKey, List[ReflectedColumn]]]¶
返回有关给定架构
中所有表中的列的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_columns()
中。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法。Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_multi_foreign_keys(connection: Connection, *, schema:strNone=None, filter_names:Collection[str]None=None, **kw: Any)Iterable[元组[TableKey, List[ReflectedForeignKeyConstraint]]]¶
返回有关给定架构
中所有表中foreign_keys的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_foreign_keys()
.
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法。Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_multi_indexes(connection: Connection, *, schema:strNone=None, filter_names:Collection[str]None=None, **kw: Any)Iterable[元组[TableKey, List[ReflectedIndex]]]¶
返回有关给定架构
中所有表中的索引的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_indexes()
中。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法。Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_multi_pk_constraint(connection: Connection, *, schema:strNone=None, filter_names:Collection[str]None=None, **kw: Any)Iterable[元组[TableKey, ReflectedPrimaryKeyConstraint]]¶
返回有关给定架构
中所有表中的主键约束的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_pk_constraint()
。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法。Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_multi_table_comment(connection: Connection, *, schema:strNone=None, filter_names:Collection[str]None=None, **kw: Any)Iterable[元组[TableKey, ReflectedTableComment]]¶
返回有关给定架构
中所有表中的表注释的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_table_comment()
.
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法。Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_multi_table_options(connection: Connection, *, schema:strNone=None, filter_names:Collection[str]None=None, **kw: Any)Iterable[元组[TableKey, Dict[str, Any]]]¶
返回在创建给定架构中的表时指定的选项字典。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_table_options()
.
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法。Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_multi_unique_constraints(connection: Connection, *, schema:strNone=None, filter_names:Collection[str]None=None, **kw: Any)Iterable[元组[TableKey, List[ReflectedUniqueConstraint]]]¶
返回有关给定架构
中所有表中唯一约束的信息。
这是一种内部方言方法。应用程序应使用Inspector.get_multi_unique_constraints()
。
注意DefaultDialect
提供了一个默认实现,它将为Dialect.get_table_names()
返回的每个对象调用单个 table 方法。Dialect.get_view_names()
或Dialect.get_materialized_view_names()
取决于提供的种类
。想要支持更快实现的 dialects 应该实现此方法。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
get_pk_constraint(connection: 连接, table_name: str, schema:strNone=None, **kw: AnyReflectedPrimaryKeyConstraint 函数¶
返回有关 table_name' 上的主键约束的信息。
给定一个Connection
,一个字符串table_name
和可选的字符串架构
返回 primary key 信息作为字典,对应于ReflectedPrimaryKeyConstraint
字典。
这是一种内部方言方法。应用程序应使用Inspector.get_pk_constraint()
中。
-
方法sqlalchemy.engine.Dialect 中。
get_schema_names(connection: Connection, **kw: Any)List[str] ¶
返回数据库中所有可用的架构名称的列表。
这是一种内部方言方法。应用程序应使用Inspector.get_schema_names()
中。
-
方法sqlalchemy.engine.Dialect 中。
get_sequence_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
返回数据库中所有可用的序列名称的列表。
这是一种内部方言方法。应用程序应使用Inspector.get_sequence_names()
.
参数
schema¶- 要查询的 schema 名称,如果不是默认 schema。
在 1.4 版本加入.
-
方法sqlalchemy.engine.Dialect 中。
get_table_comment(connection: 连接, table_name: str, schema:strNone=None, **kw: AnyReflectedTableComment ¶
返回table_name
标识的表的 “comment”。
给定一个字符串table_name
和一个可选的字符串架构
,返回 table 注释信息作为对应的字典ReflectedTableComment
字典。
这是一种内部方言方法。应用程序应使用Inspector.get_table_comment()
中。
加注:NotImplementedError
对于不支持注释的方言。
在 1.2 版本加入.
-
方法sqlalchemy.engine.Dialect 中。
get_table_names(connection: 连接, schema:strNone=None, **kw: Any)List[str] ¶
返回schema
的表名列表。
这是一种内部方言方法。应用程序应使用Inspector.get_table_names()
中。
-
方法sqlalchemy.engine.Dialect 中。
get_table_options(connection: 连接, table_name: str, schema:strNone=None, **kw: Any)Dict[str, Any] ¶
返回table_name
时指定的选项字典 已创建。
这是一种内部方言方法。应用程序应使用Inspector.get_table_options()
中。
-
方法sqlalchemy.engine.Dialect 中。
get_temp_table_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
返回给定连接上的临时表名列表(如果底层后端支持)。
这是一种内部方言方法。应用程序应使用Inspector.get_temp_table_names()
.
-
方法sqlalchemy.engine.Dialect 中。
get_temp_view_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
返回给定连接上的临时视图名称列表(如果底层后端支持)。
这是一种内部方言方法。应用程序应使用Inspector.get_temp_view_names()
.
-
方法sqlalchemy.engine.Dialect 中。
get_unique_constraints(connection: 连接, table_name: str, schema:strNone=None, **kw: AnyList[ReflectedUniqueConstraint](列表[ReflectedUniqueConstraint]) ¶
返回有关table_name
中唯一约束的信息。
给定一个字符串table_name
和一个可选的字符串架构
,以对应于ReflectedUniqueConstraint
字典的字典列表的形式返回唯一约束信息。
这是一种内部方言方法。应用程序应使用Inspector.get_unique_constraints()
。
-
方法sqlalchemy.engine.Dialect 中。
get_view_definition(connection: 连接, view_name: str, schema:strNone=None, **kw: Any)str ¶
返回普通视图或具体化视图定义。
这是一种内部方言方法。应用程序应使用Inspector.get_view_definition()
.
给定一个Connection
,一个字符串view_name
和可选的字符串架构
返回视图定义。
-
方法sqlalchemy.engine.Dialect 中。
get_view_names(connection: Connection, schema:strNone=None, **kw: Any)List[str] ¶
返回数据库中所有可用的非具体化视图名称的列表。
这是一种内部方言方法。应用程序应使用Inspector.get_view_names()
中。
参数
schema¶- 要查询的 schema 名称,如果不是默认 schema。
-
方法sqlalchemy.engine.Dialect 中。
has_index(connection: 连接, table_name: str, index_name: str, schema:strNone=None, **kw: Any)bool ¶
检查数据库中是否存在特定索引名称。
给定一个Connection
对象,一个字符串table_name
和字符串索引名称,如果给定表上存在给定名称的索引,则返回True
,否则返回False
。DefaultDialect
根据Dialect.has_table()
和Dialect.get_indexes()
方法,但是 dialects 可以实现性能更高的版本。
这是一种内部方言方法。应用程序应使用Inspector.has_index()
中。
在 1.4 版本加入.
-
方法sqlalchemy.engine.Dialect 中。
has_schema(connection: 连接, schema_name: str, **kw: Any)bool ¶
检查数据库中是否存在特定架构名称。
给定一个Connection
对象,一个字符串schema_name
,如果存在给定的架构,则返回True
,否则返回False
。DefaultDialect
通过检查返回的架构中是否存在schema_name
来实现这一点。Dialect.get_schema_names(),
但 dialects 可以实现性能更高的版本。
这是一种内部方言方法。应用程序应使用Inspector.has_schema()
中。
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
has_sequence(connection: 连接, sequence_name: str, schema:strNone=None, **kw: Any)bool ¶
检查数据库中是否存在特定序列。
给定一个Connection
对象和一个字符串 sequence_name,如果数据库中存在给定序列,则返回True
,否则返回False
。
这是一种内部方言方法。应用程序应使用Inspector.has_sequence()
中。
-
方法sqlalchemy.engine.Dialect 中。
has_table(connection: 连接, table_name: str, schema:strNone=None, **kw: Any)bool ¶
对于内部方言的使用,请检查数据库中是否存在特定表或视图。
给定一个Connection
对象、一个字符串table_name和可选的架构名称,如果给定的表存在于数据库中,则返回 True,否则返回 False。
此方法用作面向公众的Inspector.has_table()
方法的底层实现,并且也被使用 在内部实现 “checkFirst” 行为,以便对Table.create()
和MetaData.create_all()
的 API 创建。
注意
此方法由 SQLAlchemy 在内部使用,并发布,以便第三方方言可以提供实现。它不是用于检查表存在的公共 API。请使用Inspector.has_table()
方法。
在 2.0 版本发生变更:Dialect.has_table()
现在正式支持检查其他类似表的对象:
任何类型的视图 (普通视图或实例化视图)
任何类型的临时表
以前,这两项检查没有正式指定,不同的方言的行为会有所不同。dialect 测试套件现在包括对所有这些对象类型的测试,并且 dialect 在后备数据库支持视图或临时表的程度上应寻求支持定位这些对象以实现完全合规性。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
has_terminate: bool¶
此方言是否具有单独的 “terminate” 实现,该实现不会阻止或不需要等待。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
identifier_preparer: IdentifierPreparer¶
此元素将引用IdentifierPreparer
的实例 一旦构造了DefaultDialect
。
-
类方法sqlalchemy.engine.Dialect 的 Dialect 中。
import_dbapi()模块 ¶
导入此方言使用的 DBAPI 模块。
此处返回的 Python 模块对象将被分配为 instance 变量转换为名称.dbapi
的
在 2.0 版更改:Dialect.import_dbapi()
类方法已从上一个方法重命名而来。Dialect.dbapi(),
它将在 dialect 实例化时被 DBAPI 模块本身替换,从而以两种不同的方式使用相同的名称。如果.Dialect.dbapi()
类方法存在于第三方方言上,则将使用它并发出弃用警告。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
include_set_input_sizes:Set[Any]无¶
应包含在自动 cursor.setinputsizes() 调用中的 DBAPI 类型对象集。
仅当 bind_typing 为 BindTyping.SET_INPUT_SIZES 时,才使用此方法
-
方法sqlalchemy.engine.Dialect 中。
initialize(connection: 连接)无 ¶
在战略性创建具有连接的方言期间调用。
允许 dialect 根据服务器版本信息或其他属性配置选项。
此处传递的连接是一个 SQLAlchemy Connection 对象,具有完整的功能。
基本方言的 initialize() 方法应该通过 super() 调用。
注意
从 SQLAlchemy 1.4 开始,此方法在 任何Dialect.on_connect()
钩子都会被调用。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
inline_comments: bool¶
指示方言支持与 Table 或 Column 的定义内联的注释 DDL。如果为 False,则表示必须使用 ALTER 来设置表和列注释。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
insert_executemany_returning: bool¶
dialect / driver / database 支持一些提供 INSERT 的方法...使用 dialect.do_executemany() 时支持 RETURNING。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
insert_executemany_returning_sort_by_parameter_order: bool (布尔值)¶
dialect / driver / database 支持一些提供 INSERT 的方法...RETURNING 支持(当 dialect.do_executemany() 与Insert.returning.sort_by_parameter_order
参数。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
insert_returning: bool (布尔值)¶
如果方言支持带 INSERT 的 RETURNING
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
insertmanyvalues_implicit_sentinel: InsertmanyvaluesSentinelOpts¶
指示数据库支持批量 INSERT 形式的选项,其中自动递增整数主键可以可靠地用作 INSERTed 行的排序。
在 2.0.10 版本加入.
另请参阅
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
insertmanyvalues_max_parameters: int¶
Alternate to insertmanyvalues_page_size 将根据语句中的参数总数额外限制页面大小。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
insertmanyvalues_page_size: int¶
要呈现到单个 INSERT 中的行数..VALUES() 语句进行ExecuteStyle.INSERTMANYVALUES
执行。
默认 dialect 默认为 1000。
2.0 版的新Function。
另请参阅
Connection.execution_options.insertmanyvalues_page_size
- 执行选项在Connection
、statements 上可用
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
is_async: bool¶
此方言是否用于 asyncio 。
-
方法sqlalchemy.engine.Dialect 中。
is_disconnect(e: Exception, connection:PoolProxiedConnectionDBAPIConnectionNone, cursor:DBAPICursorNone)bool ¶
如果给定的 DB-API 错误指示连接无效,则返回 True
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
label_length:intNone¶
可选的用户定义的 SQL 标签最大长度
-
类方法sqlalchemy.engine.Dialect 的 Dialect 中。
load_provisioning()无 ¶
为此方言设置 provision.py 模块。
对于包含设置 provisioning followers 的 provision.py 模块的方言,此方法应启动该过程。
典型的实现方式是:@classmethod def load_provisioning(cls): __import__("mydialect.provision")
默认方法根据__module__
假定当前方言的 owning 包中名为provision.py
的模块 属性:@classmethod def load_provisioning(cls): package = ".".join(cls.__module__.split(".")[0:-1]) try: __import__(package + ".provision") except ImportError: pass
在 1.3.14 版本加入.
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
loaded_dbapi¶
与 .dbapi 相同,但绝不是 None;如果未设置 DBAPI,则会引发错误。
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
max_identifier_length: int¶
标识符名称的最大长度。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
名称:str¶
从 DBAPI 中立的角度识别方言的名称(即 'sqlite')
-
方法sqlalchemy.engine.Dialect 中。
normalize_name(name: str)str ¶
如果检测到 given name 不区分大小写,则将其转换为 lowercase。
仅当方言定义 requires_name_normalize=True 时,才使用此方法。
-
方法sqlalchemy.engine.Dialect 中。
on_connect()→Callable[[Any],Any]无¶
返回一个可调用对象,用于设置新创建的 DBAPI 连接。
可调用对象应接受单个参数 “conn”,该参数是 DBAPI 连接本身。内部可调用对象没有返回值。
例如:class MyDialect(default.DefaultDialect): # ... def on_connect(self): def do_on_connect(connection): connection.execute("SET SPECIAL FLAGS etc") return do_on_connect
这用于设置方言范围的 per-connection 选项,例如隔离模式、Unicode 模式等。
“do_on_connect” 可调用对象通过使用PoolEvents.connect()
事件钩子,然后解包DBAPI连接并将其传递给可调用对象。
在 1.4 版本发生变更: on_connect 钩子不再为方言的第一个连接调用两次。但是,on_connect 钩子仍然在Dialect.initialize()
方法之前调用。
在 1.4.3 版本发生变更: on_connect 钩子是从一个新的方法 on_connect_url 调用的,该方法传递用于创建 connect args 的 URL。如果 Dialect 需要用于连接的 URL 对象来获取其他上下文,则可以实现 on_connect_url 而不是 on_connect。
如果返回 None,则不生成事件监听器。
结果
接受单个 DBAPI 连接作为参数的可调用对象,或 None。
另请参阅Dialect.connect()
- 允许控制 DBAPIconnect()
序列本身。Dialect.on_connect_url()
- 取代Dialect.on_connect()
来接收URL
对象。
-
方法sqlalchemy.engine.Dialect 中。
on_connect_url(url: URL)→Callable[[Any],Any]无¶
返回一个可调用对象,用于设置新创建的 DBAPI 连接。
此方法是一个新钩子,它取代了Dialect.on_connect()
方法(当由 方言。 当未由 dialect 实现时,它会调用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
这用于设置方言范围的 per-connection 选项,例如隔离模式、Unicode 模式等。
此方法与Dialect.on_connect()
的不同之处在于,它传递的是与connect args 的 ARM。 通常,获取此 API 的唯一方法是从
Dialect.on_connect()
钩子是查看Engine
本身,但是此 URL 对象可能已替换为插件。
注意
的默认实现Dialect.on_connect_url()
用于调用Dialect.on_connect()
方法。因此,如果方言实现了此方法,则 Dialect.on_connect()
method 不会被调用,除非覆盖的 dialect 直接从这里调用它。
在 1.4.3 版本加入: 添加了Dialect.on_connect_url()
它通常调用Dialect.on_connect()
。
参数
url¶—— 一个URL
对象,代表传递给
Dialect.create_connect_args()
方法。
结果
接受单个 DBAPI 连接作为参数的可调用对象,或 None。
另请参阅
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
paramstyle: str¶
要使用的 paramstyle(某些 DB-API 支持多个 paramstyle)。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
位置: bool¶
如果此 Dialect 的 paramstyle 是位置 true。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
preexecute_autoincrement_sequences: bool¶
如果 'implicit' 主键函数必须单独执行才能获取其值,则为 True,如果未使用 RETURNING。
目前,这是面向 PostgreSQL 的,当implicit_returning=False
参数用于Table
对象。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
preparer: Type[IdentifierPreparer]¶
一个IdentifierPreparer
类,用于引用标识符。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
reflection_options: 序列[str] = ()¶
字符串名称序列,指示可以在Table
对象上建立的关键字参数,当使用Table.autoload_with
时,该参数将作为 “反射选项” 传递。
当前示例是 Oracle Database 方言中的“oracle_resolve_synonyms”。
-
方法sqlalchemy.engine.Dialect 中。
reset_isolation_level(dbapi_connection: DBAPIConnection)无 ¶
给定 DBAPI 连接,将其隔离恢复为默认值。
请注意,这是一个 dialect 级别的方法,用作Connection
和发动机
隔离级设施;这些 API 应优先用于 最典型的用例。
另请参阅
Connection.get_isolation_level()
- 查看当前级别
Connection.default_isolation_level
- 查看默认级别
Connection.execution_options.isolation_level
- 按连接
隔离级别设置create_engine.isolation_level
- 根据引擎
隔离级别设置
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
returns_native_bytes: bool¶
指示 Python bytes() 对象是否由 SQL“二进制”数据类型的驱动程序本地返回。
2.0.11 版本的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
sequences_optional: bool¶
如果为 True,则指示Sequence.optional
参数应发出信号,表示不生成 CREATE SEQUENCE。仅适用于支持序列的方言。当前仅用于允许 PostgreSQL SERIAL 在指定 Sequence() 用于其他后端的列上使用。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
server_side_cursors: bool (布尔值)¶
荒废的;指示 dialect 是否应默认尝试使用服务器端游标
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
server_version_info:元组[Any,...]无¶
一个元组,其中包含正在使用的数据库后端的版本号。
此值仅适用于支持的方言,并且通常在与数据库的初始连接期间填充。
-
方法sqlalchemy.engine.Dialect 中。
set_connection_execution_options(connection: Connection, opts: CoreExecuteOptionsParameter)无 ¶
为给定连接建立执行选项。
这是由DefaultDialect
实现的,以便实现Connection.execution_options.isolation_level
执行选项。 Dialect 可以拦截各种执行选项 这可能需要修改特定 DBAPI 连接上的状态。
在 1.4 版本加入.
-
方法sqlalchemy.engine.Dialect 中。
set_engine_execution_options(engine: Engine, opts: CoreExecuteOptionsParameter)无 ¶
为给定引擎建立执行选项。
这是由DefaultDialect
实现的,用于为给定Engine
创建的新Connection
实例建立事件钩子,然后调用Dialect.set_connection_execution_options()
方法。
-
方法sqlalchemy.engine.Dialect 中。
set_isolation_level(dbapi_connection: DBAPIConnection, level: Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT'])无 ¶
给定 DBAPI 连接,设置其隔离级别。
请注意,这是一个 dialect 级别的方法,用作Connection
和发动机
隔离级设施;这些 API 应优先用于 最典型的用例。
如果 dialect 还实现了Dialect.get_isolation_level_values()
方法,则保证给定的级别是该序列中的字符串名称之一,并且该方法不需要预料到查找失败。
另请参阅
Connection.get_isolation_level()
- 查看当前级别
Connection.default_isolation_level
- 查看默认级别
Connection.execution_options.isolation_level
- 按连接
隔离级别设置create_engine.isolation_level
- 根据引擎
隔离级别设置
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
statement_compiler: 类型[SQLCompiler]¶
用于编译 SQL 语句的Compiled
类
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_alter: bool¶
如果数据库支持ALTER TABLE
,则为 True
,仅用于在某些情况下生成外键约束
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_comments: bool¶
表示 dialect 支持对表和列进行注释 DDL。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_constraint_comments: bool (布尔值)¶
指示方言是否支持对约束的注释 DDL。
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_default_metavalue: bool (布尔值)¶
dialect 支持 INSERT...(列)VALUES (DEFAULT) 语法。
大多数数据库都以某种方式支持这一点,例如 SQLite 使用值 (NULL)。
MS SQL Server 也支持该语法,但它是唯一一个禁用了此功能的包含方言,因为 MSSQL 不支持 IDENTITY 列的字段,这通常是我们喜欢使用该功能的地方。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_default_values: bool¶
dialect 支持 INSERT...DEFAULT VALUES 语法
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_empty_insert: bool (布尔值)¶
dialect 支持 INSERT () VALUES () ),即没有列的普通 INSERT。
这通常不受支持;“空”插入通常适合使用“INSERT..DEFAULT VALUES“ 或 ”INSERT ...(列)VALUES (DEFAULT)“的 VALUES (DEFAULT)”。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_identity_columns: bool¶
目标数据库支持 IDENTITY
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_multivalues_insert: bool¶
Target 数据库支持 INSERT...具有多个值集的 VALUES,即 INSERT INTO table (cols) VALUES (...), (...), (...), ...
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_native_boolean: bool¶
指示方言是否支持本机布尔构造。这将防止Boolean
在使用该类型时生成 CHECK 约束。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_native_decimal: bool¶
指示是否为精度数字类型处理和返回 Decimal 对象,或者是否返回浮点数
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_native_enum: bool¶
指示方言是否支持本机 ENUM 构造。这将防止Enum
在 “native” 模式下使用该类型时生成 CHECK 约束。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_native_uuid: bool¶
指示 Python UUID() 对象是否由 SQL UUID 数据类型的驱动程序本机处理。
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_sane_multi_rowcount: bool¶
指示方言是否正确实现了UPDATE
和DELETE
语句。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_sane_rowcount: bool¶
指示方言是否正确实现了UPDATE
和DELETE
语句。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_sequences: bool¶
指示方言是否支持 CREATE SEQUENCE 或类似内容。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_server_side_cursors: bool (布尔值)¶
指示 dialect 是否支持服务器端游标
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_simple_order_by_label: bool¶
目标数据库支持 ORDER BY <labelname>,其中 <labelname> 引用 SELECT 的 columns 子句中的标签
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
supports_statement_cache: bool = True¶
指示此方言是否支持缓存。
所有与语句缓存兼容的方言都应直接在支持它的每个方言类和子类上将此标志设置为 True。SQLAlchemy 在使用语句缓存之前测试此标志是否本地存在于每个 dialect 子类上。这是为了为尚未完全测试符合 SQL 语句缓存的旧方言或新方言提供安全性。
在 1.4.5 版本加入.
另请参阅
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
tuple_in_values: bool (布尔值)¶
目标数据库支持元组 IN,即 (x, y) IN ((q, p), (r, z))
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
type_compiler: 任意¶
遗产;这是类级别的 TypeCompiler 类,实例级别的 TypeCompiler 实例。
请改用 type_compiler_instance。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
type_compiler_cls: ClassVar[Type[TypeCompiler]]¶
用于编译 SQL 类型对象的Compiled
类
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
type_compiler_instance: TypeCompiler¶
用于编译 SQL 类型对象的Compiled
类的实例
2.0 版的新Function。
-
方法sqlalchemy.engine.Dialect 中。
type_descriptor(typeobj: TypeEngine[_T])TypeEngine[_T] ¶
将泛型类型转换为特定于方言的类型。
Dialect 类通常会使用adapt_type()
函数来完成此作。
返回的结果是按 dialect 类缓存的,因此不能包含 dialect-instance 状态。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
update_executemany_returning: bool¶
dialect 支持 UPDATE..使用 executemany 返回。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
update_returning: bool¶
如果方言支持使用 UPDATE 返回
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
update_returning_multifrom: bool¶
如果方言支持使用 UPDATE 返回..从
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
use_insertmanyvalues: bool (布尔值)¶
如果为 True,则表示应使用“insertmanyvalues”功能来允许insert_executemany_returning
行为(如果可能)。
在实践中,将此设置为 True 意味着:
如果supports_multivalues_insert
,则 insert_returning
和use_insertmanyvalues
均为 True,则 SQL 编译器将生成一个 INSERT,该 INSERT 将由DefaultDialect
解释 作为ExecuteStyle.INSERTMANYVALUES
执行,它允许通过重写单行 INSERT 语句来使用 RETURN 对多行执行 INSERT,使其具有多个 VALUES 子句,并在给定大量行时为一系列批处理多次执行该语句。
默认方言的参数为 False,默认方言的参数设置为 True SQL炼金术内部方言 SQLite、MySQL/MariaDB、PostgreSQL、SQL Server。 对于 Oracle Database,它仍然为 False,它提供原生的 “executemany 与 RETURNING“支持,也不支持supports_multivalues_insert
。 对于 MySQL/MariaDB,那些 MySQL 方言 不支持 RETURNING 的将不会报告insert_executemany_returning
为 True。
2.0 版的新Function。
-
属性sqlalchemy.engine.Dialect 的 Dialect 中。
use_insertmanyvalues_wo_returning: bool¶
如果为 True,并且 use_insertmanyvalues 也是 True,则不包含 RETURNING 的 INSERT 语句也将使用 “insertmanyvalues”。
2.0 版的新Function。
-
-
类 sqlalchemy.engine.default。DefaultExecutionContext¶
成员
编译, 连接, create_cursor(), current_parameters, 游标, 方言, 引擎, execute_style, executemany, execution_options, fetchall_for_returning(), get_current_parameters(), get_lastrowid()、get_out_parameter_values()、get_result_processor()、handle_dbapi_exception()、invoked_statement、isinsert、isupdate、lastrow_has_defaults()、no_parameters、参数、post_exec()、postfetch_cols、pre_exec()、prefetch_cols、root_connection
类签名
类sqlalchemy.engine.default.DefaultExecutionContext
(sqlalchemy.engine.interfaces.ExecutionContext
)-
attributesqlalchemy.engine.default.DefaultExecutionContext.
compiled:CompiledNone = None¶
如果传递给 constructor,则执行 sqlalchemy.engine.base.Compiled 对象
-
attributesqlalchemy.engine.default.DefaultExecutionContext.
connection: 连接¶
Connection 对象,默认值生成器可以自由使用它来执行 SQL。此 Connection 应引用 root_connection 的相同底层 connection/transactional 资源。
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
create_cursor()¶
返回从此 ExecutionContext 的连接生成的新游标。
某些方言可能希望更改 connection.cursor() 的行为,例如 postgresql,它可能会返回 PG“服务器端”游标。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
current_parameters:_CoreSingleExecuteParamsNone = 无¶
应用于当前行的参数字典。
此属性仅在用户定义的默认生成函数的上下文中可用,例如,如上下文相关默认函数中所述。它由一个字典组成,该字典包含要成为 INSERT 或 UPDATE 语句一部分的每个列/值对的条目。字典的 keys 将是每个Column
的 key 值,通常与 name 同义。
请注意,属性DefaultExecutionContext.current_parameters
不支持Insert.values()
方法。 这DefaultExecutionContext.get_current_parameters()
method 应首选。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
光标:DBAPICursor¶
从连接处获取的 DB-API 游标
-
attributesqlalchemy.engine.default.DefaultExecutionContext.
dialect: 方言¶
dialect 创建此 ExecutionContext 的 dialect 创建此 ExecutionContext 的 Dialect 的 Dialect 中。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
engine: 引擎¶
与 Connection 关联的 engine
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
execute_style: ExecuteStyle = 0¶
将用于执行语句的 DBAPI 游标方法的样式。
2.0 版的新Function。
-
attributesqlalchemy.engine.default.DefaultExecutionContext.
executemany: bool¶
如果上下文具有多个参数集的列表,则为 True。
从历史上看,此属性链接到cursor.execute()
还是cursor.executemany()
将被使用。 它现在也可以表示 “insertmanyvalues” 表示一个或多个cursor.execute()
调用。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
execution_options: _ExecuteOptions = {}¶
与当前语句执行关联的执行选项
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
fetchall_for_returning(cursor))¶
对于 RETURNING 结果,请从 DBAPI 游标传递 cursor.fetchall()。
这是一个特定于方言的钩子,用于具有特殊 调用为 “RETURNING” 语句。 默认实现为cursor.fetchall()
的
此钩子目前仅由 insertmanyvalues 使用 特征。 未设置use_insertmanyvalues=True
的方言 不需要考虑这个钩子。
在 2.0.10 版本加入.
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
get_current_parameters(isolate_multiinsert_groups=True)¶
返回应用于当前行的参数字典。
此方法只能在用户定义的 default 的上下文中使用 generation 函数,例如 上下文相关的默认函数。调用时,将返回一个字典,其中包括作为 INSERT 或 UPDATE 语句一部分的每个列/值对的条目。字典的 keys 将是每个Column
的 key 值,通常与 name 同义。
参数
isolate_multiinsert_groups=True¶ – 表示使用Insert.values()
创建的多值 INSERT 结构 应该是 通过仅返回本地参数的子集来处理 添加到当前列 default 调用。 当False
时,将返回语句的原始参数,包括在多值 INSERT 情况下使用的命名约定。
1.2 版本中的新功能: addedDefaultExecutionContext.get_current_parameters()
它比现有的DefaultExecutionContext.current_parameters
属性。
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
get_lastrowid()¶
return self.cursor.lastrowid 或等效项,在 INSERT 之后。
这可能涉及调用特殊的游标函数,在游标上发出新的 SELECT(或新的 SELECT)或返回在 post_exec() 中计算的存储值。
仅当支持“隐式”主键生成、将 preexecute_autoincrement_sequences 设置为 False 以及没有显式 id 值绑定到语句时,才会调用此函数。
该函数被调用一次,用于 INSERT 语句,该语句需要 返回那些使用 的 lastrowid 概念。 在这些情况下,它会直接在ExecutionContext.post_exec()
中。
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
get_out_parameter_values(names)¶
从游标返回 OUT 参数值的序列。
对于支持 OUT 参数的方言,当存在具有SQLCompiler.has_out_parameters
标志集。如果语句本身具有BindParameter
,则此标志将依次设置为 True 设置了.isoutparam
标志的对象,这些对象由SQLCompiler.visit_bindparam() 方法
使用。如果 dialect 编译器生成带有.isoutparam
的BindParameter
对象 set 不被SQLCompiler.visit_bindparam()
处理,它应该显式设置这个标志。
为每个绑定参数呈现的名称列表将传递给该方法。然后,该方法应返回与参数对象列表对应的值序列。与以前的 SQLAlchemy 版本不同,这些值可以是来自 DBAPI;执行上下文将应用适当的类型 处理程序,并更新 值。 然后,处理后的字典将通过.out_parameters
result 对象上的集合。请注意,SQLAlchemy 1.4 具有多种结果对象作为 2.0 过渡的一部分。
1.4 版本中的新功能: - 添加ExecutionContext.get_out_parameter_values()
,当存在设置了.isoutparam
标志的BindParameter
对象时,DefaultExecutionContext
会自动调用该标志。这取代了在现已删除的get_result_proxy()
方法中设置参数的做法。
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
get_result_processor(type_, colname, coltype)¶
返回 cursor.description 中存在的给定类型的 'result processor'。
这有一个默认实现,dialect 可以覆盖该实现以进行上下文相关的结果类型处理。
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
handle_dbapi_exception(e)¶
收到在执行、结果获取等时发生的 DBAPI 异常。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
invoked_statement:ExecutableNone = None¶
首先给出的 Executable statement 对象。
这在结构上应该等同于 compiled.statement,但不一定与缓存场景中已从缓存中提取的编译形式相同。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
是插入: bool = False¶
如果语句是 INSERT,则为 True。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
isupdate: bool = False¶
如果语句是 UPDATE,则为 True。
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
lastrow_has_defaults()¶
如果最后一个 INSERT 或 UPDATE 行包含内联或数据库端默认值,则返回 True。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
no_parameters: bool¶
如果执行样式不使用参数,则为 True
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
参数: _DBAPIMultiExecuteParams¶
绑定到 execute() 或 exec_driver_sql() 方法的 bind 参数。
这些始终存储为参数条目列表。单元素列表对应于cursor.execute()
调用,多元素列表对应于cursor.executemany(),
但ExecuteStyle.INSERTMANY值
将使用cursor.execute() 的 Execute 函数
。
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
post_exec()¶
在执行已编译的语句后调用。
如果已将编译的语句传递给此 ExecutionContext,则last_insert_ids、last_inserted_params等数据成员在此方法完成后应可用。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
postfetch_cols:util.generic_fn_descriptor[Sequence[Column[Any]]None]¶
触发了服务器端默认或内联 SQL 表达式值的 Column 对象列表。适用于插入和更新。
-
方法sqlalchemy.engine.default.DefaultExecutionContext.
pre_exec()¶
在执行已编译的语句之前调用。
如果已将编译的语句传递给此 ExecutionContext,则必须在此语句完成后初始化语句和参数 datamembers。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
prefetch_cols:util.generic_fn_descriptor[Sequence[列[Any]]无]¶
触发了客户端默认值的 Column 对象的列表。适用于插入和更新。
-
属性sqlalchemy.engine.default.DefaultExecutionContext.
root_connection: 连接¶
Connection 对象,该对象是此 ExecutionContext 的源。
-
-
类 sqlalchemy.engine 中。ExecutionContext(执行上下文)¶
成员
编译, 连接, create_cursor(), 游标, 方言, 引擎, execute_style, executemany, execution_options, fetchall_for_returning(), fire_sequence(), get_out_parameter_values(), get_rowcount()、handle_dbapi_exception()、invoked_statement、isinsert、isupdate、lastrow_has_defaults()、no_parameters、参数、post_exec()、postfetch_cols、pre_exec()、prefetch_cols、root_connection、 陈述
对应于单个执行的 Dialect 的 messenger 对象。-
attributesqlalchemy.engine.ExecutionContext.
compiled:CompiledNone¶
如果传递给 constructor,则执行 sqlalchemy.engine.base.Compiled 对象
-
attributesqlalchemy.engine.ExecutionContext.
connection: 连接¶
Connection 对象,默认值生成器可以自由使用它来执行 SQL。此 Connection 应引用 root_connection 的相同底层 connection/transactional 资源。
-
方法sqlalchemy.engine.ExecutionContext.
create_cursor()DBAPICursor ¶
返回从此 ExecutionContext 的连接生成的新游标。
某些方言可能希望更改 connection.cursor() 的行为,例如 postgresql,它可能会返回 PG“服务器端”游标。
-
属性sqlalchemy.engine.ExecutionContext.
光标:DBAPICursor¶
从连接处获取的 DB-API 游标
-
attributesqlalchemy.engine.ExecutionContext.
dialect: 方言¶
dialect 创建此 ExecutionContext 的 dialect 创建此 ExecutionContext 的 Dialect 的 Dialect 中。
-
属性sqlalchemy.engine.ExecutionContext.
engine: 引擎¶
与 Connection 关联的 engine
-
属性sqlalchemy.engine.ExecutionContext.
execute_style:ExecuteStyle¶
将用于执行语句的 DBAPI 游标方法的样式。
2.0 版的新Function。
-
attributesqlalchemy.engine.ExecutionContext.
executemany: bool¶
如果上下文具有多个参数集的列表,则为 True。
从历史上看,此属性链接到cursor.execute()
还是cursor.executemany()
将被使用。 它现在也可以表示 “insertmanyvalues” 表示一个或多个cursor.execute()
调用。
-
属性sqlalchemy.engine.ExecutionContext.
execution_options:_ExecuteOptions¶
与当前语句执行关联的执行选项
-
方法sqlalchemy.engine.ExecutionContext.
fetchall_for_returning(cursor: DBAPICursor)Sequence[Any] ¶
对于 RETURNING 结果,请从 DBAPI 游标传递 cursor.fetchall()。
这是一个特定于方言的钩子,用于具有特殊 调用为 “RETURNING” 语句。 默认实现为cursor.fetchall()
的
此钩子目前仅由 insertmanyvalues 使用 特征。 未设置use_insertmanyvalues=True
的方言 不需要考虑这个钩子。
在 2.0.10 版本加入.
-
方法sqlalchemy.engine.ExecutionContext.
fire_sequence(seq: Sequence_SchemaItem, type_: Integer)int ¶
给定一个Sequence
,调用它并返回下一个 int 值
-
方法sqlalchemy.engine.ExecutionContext.
get_out_parameter_values(out_param_names: Sequence[str])Sequence[Any] ¶
从游标返回 OUT 参数值的序列。
对于支持 OUT 参数的方言,当存在具有SQLCompiler.has_out_parameters
标志集。如果语句本身具有BindParameter
,则此标志将依次设置为 True 设置了.isoutparam
标志的对象,这些对象由SQLCompiler.visit_bindparam() 方法
使用。如果 dialect 编译器生成带有.isoutparam
的BindParameter
对象 set 不被SQLCompiler.visit_bindparam()
处理,它应该显式设置这个标志。
为每个绑定参数呈现的名称列表将传递给该方法。然后,该方法应返回与参数对象列表对应的值序列。与以前的 SQLAlchemy 版本不同,这些值可以是来自 DBAPI;执行上下文将应用适当的类型 处理程序,并更新 值。 然后,处理后的字典将通过.out_parameters
result 对象上的集合。请注意,SQLAlchemy 1.4 具有多种结果对象作为 2.0 过渡的一部分。
1.4 版本中的新功能: - 添加ExecutionContext.get_out_parameter_values()
,当存在设置了.isoutparam
标志的BindParameter
对象时,DefaultExecutionContext
会自动调用该标志。这取代了在现已删除的get_result_proxy()
方法中设置参数的做法。
-
方法sqlalchemy.engine.ExecutionContext.
get_rowcount()→intNone¶
返回 DBAPIcursor.rowcount
值,或者在某些情况下返回解释的值。
有关详细信息,请参阅CursorResult.rowcount
。
-
方法sqlalchemy.engine.ExecutionContext.
handle_dbapi_exception(e: BaseException)None ¶
收到在执行、结果获取等时发生的 DBAPI 异常。
-
属性sqlalchemy.engine.ExecutionContext.
invoked_statement:ExecutableNone¶
首先给出的 Executable statement 对象。
这在结构上应该等同于 compiled.statement,但不一定与缓存场景中已从缓存中提取的编译形式相同。
-
属性sqlalchemy.engine.ExecutionContext.
为 insert: bool¶
如果语句是 INSERT,则为 True。
-
属性sqlalchemy.engine.ExecutionContext.
isUpdate: bool¶
如果语句是 UPDATE,则为 True。
-
方法sqlalchemy.engine.ExecutionContext.
lastrow_has_defaults()bool ¶
如果最后一个 INSERT 或 UPDATE 行包含内联或数据库端默认值,则返回 True。
-
属性sqlalchemy.engine.ExecutionContext.
no_parameters: bool¶
如果执行样式不使用参数,则为 True
-
属性sqlalchemy.engine.ExecutionContext.
参数: _AnyMultiExecuteParams¶
绑定到 execute() 或 exec_driver_sql() 方法的 bind 参数。
这些始终存储为参数条目列表。单元素列表对应于cursor.execute()
调用,多元素列表对应于cursor.executemany(),
但ExecuteStyle.INSERTMANY值
将使用cursor.execute() 的 Execute 函数
。
-
方法sqlalchemy.engine.ExecutionContext.
post_exec()无 ¶
在执行已编译的语句后调用。
如果已将编译的语句传递给此 ExecutionContext,则last_insert_ids、last_inserted_params等数据成员在此方法完成后应可用。
-
属性sqlalchemy.engine.ExecutionContext.
postfetch_cols:util.generic_fn_descriptor[Sequence[Column[Any]]None]¶
触发了服务器端默认或内联 SQL 表达式值的 Column 对象列表。适用于插入和更新。
-
方法sqlalchemy.engine.ExecutionContext.
pre_exec()无 ¶
在执行已编译的语句之前调用。
如果已将编译的语句传递给此 ExecutionContext,则必须在此语句完成后初始化语句和参数 datamembers。
-
属性sqlalchemy.engine.ExecutionContext.
prefetch_cols:util.generic_fn_descriptor[Sequence[列[Any]]无]¶
触发了客户端默认值的 Column 对象的列表。适用于插入和更新。
-
属性sqlalchemy.engine.ExecutionContext.
root_connection: 连接¶
Connection 对象,该对象是此 ExecutionContext 的源。
-
attributesqlalchemy.engine.ExecutionContext.
语句:str¶
string 版本。要么传递给构造函数,要么必须从 sql.在 pre_exec() 完成时编译的对象。
-
-
类 sqlalchemy.sql.compiler。ExpandedState(展开状态)¶
表示在为语句生成 “expanded” 和 “post compile” 绑定参数时使用的状态。
“expanded” 参数是在语句执行时生成的参数,用于适应传递的多个参数,最突出的示例是 IN 表达式中的各个元素。
“编译后”参数是 SQL 文本值将在执行时呈现到 SQL 语句中的参数,而不是作为单独的参数传递给驱动程序。
要创建ExpandedState
实例,请使用SQLCompiler.construct_expanded_state()
method on anySQLCompiler
实例。
类签名
类sqlalchemy.sql.compiler.ExpandedState
(builtins.tuple
)-
属性sqlalchemy.sql.compiler.ExpandedState.
additional_parameters¶ ExpandedState.parameters
的同义词。
-
属性sqlalchemy.sql.compiler.ExpandedState.
parameter_expansion: Mapping[str, List[str]]¶
映射表示从原始参数名称到“扩展”参数名称列表的中间链接,对于那些已扩展的参数。
-
属性sqlalchemy.sql.compiler.ExpandedState.
参数: _CoreSingleExecuteParams¶
参数字典,参数完全展开。
对于使用命名参数的语句,此字典将完全映射到语句中的名称。对于使用位置参数的语句,ExpandedState.positional_parameters
将生成一个设置了 positional 参数的 Tuples。
-
属性sqlalchemy.sql.compiler.ExpandedState.
positional_parameters¶
位置参数的元组,用于使用位置参数样式编译的语句。
-
attributesqlalchemy.sql.compiler.ExpandedState.
positiontup:Sequence[str]None¶
指示位置参数顺序的字符串名称序列
-
属性sqlalchemy.sql.compiler.ExpandedState.
处理器:Mapping[str, _BindProcessorType[Any]]¶
绑定值处理器的映射
-
attributesqlalchemy.sql.compiler.ExpandedState.
语句:str¶
参数完全展开的字符串 SQL 语句
-
-
类 sqlalchemy.sql.compiler。GenericType编译器¶
成员
类签名
类sqlalchemy.sql.compiler.GenericTypeCompiler
(sqlalchemy.sql.compiler.TypeCompiler
)-
属性sqlalchemy.sql.compiler.GenericTypeCompiler.
ensure_kwarg: str = 'visit_\\w+'¶
继承自TypeCompiler
的TypeCompiler.ensure_kwarg
属性
一个正则表达式,指示方法应接受**kw
参数的方法名称。
该类将扫描与 name 模板匹配的方法,并在必要时对其进行修饰,以确保接受**kw
参数。
-
-
sqlalchemy.log 类。已识别¶
-
类 sqlalchemy.sql.compiler。IdentifierPreparer 编译器¶
成员
__init__(), format_column(), format_label_name(), format_schema(), format_table(), format_table_seq(), 报价(), quote_identifier(), quote_schema(), schema_for_object, unformat_identifiers(), validate_sql_phrase()
根据选项处理标识符的引用和大小写折叠。-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
__init__(方言, initial_quote='“', final_quote=无, escape_quote='”', quote_case_sensitive_collations=True, omit_schema=False)¶
构造一个新的IdentifierPreparer
对象。- initial_quote
以分隔标识符开头的字符。- final_quote
结束分隔标识符的字符。默认为 initial_quote。- omit_schema
防止预置架构名称。对于不支持 schemae 的数据库很有用。
-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
format_column(column, use_table=False, name=None, table_name=None, use_schema=False, anon_map=None)¶
准备带引号的列名称。
-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
format_label_name(name, anon_map=None)¶
准备带引号的列名称。
-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
format_schema(name)¶
准备带引号的架构名称。
-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
format_table(table, use_schema=True, name=None)¶
准备带引号的表和 Schema 名称。
-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
format_table_seq(table, use_schema=True)¶
将 table name 和 schema 格式设置为元组。
-
methodsqlalchemy.sql.compiler.IdentifierPreparer.
quote(ident: str, force:AnyNone=None)str ¶
有条件地引用标识符。
如果标识符是保留字,则引用标识符,包含 引用必要的字符,或者是quoted_name
,其中包括设置为True
的quote
。
子类可以覆盖此属性,以便为标识符名称提供依赖于数据库的引用行为。
参数
ident¶ – 字符串标识符
力¶ –
闲置
0.9 版后已移除: 这IdentifierPreparer.quote.force
参数已弃用,并将在将来删除 释放。 此标志对IdentifierPreparer.quote()
方法;请参考quoted_name
。
-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
quote_identifier(value: str)str ¶
引用标识符。
子类应该覆盖它以提供依赖于数据库的引用行为。
-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
quote_schema(schema: str, force:AnyNone=None)str ¶
有条件地引用架构名称。
如果名称是保留字、包含需要引号的字符,或者quoted_name
是包含quote
设置为True
。
子类可以覆盖此属性,以便为 schema 名称提供依赖于数据库的引用行为。
参数
schema¶ – 字符串 schema name
力¶ –
闲置
0.9 版后已移除: 这IdentifierPreparer.quote_schema.force
参数已弃用,并将在将来删除 释放。 此标志对IdentifierPreparer.quote()
方法;请参考quoted_name
。
-
属性sqlalchemy.sql.compiler.IdentifierPreparer.
schema_for_object: _SchemaForObjectCallable = operator.attrgetter('schema')¶
返回对象的 .schema 属性。
对于默认的 IdentifierPreparer,对象的架构始终是 “.schema” 属性的值。如果将 preparer 替换为具有非空 schema_translate_map的 preparer,则 “.schema” 属性的值将呈现一个符号,该符号将从映射后编译中转换为实际的模式名称。
-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
unformat_identifiers(标识符)¶
将类似 'schema.table.column' 的字符串解压缩到组件中。
-
方法sqlalchemy.sql.compiler.IdentifierPreparer.
validate_sql_phrase(element, reg)¶
关键字序列过滤器。
用于表示关键字序列的元素的过滤器,例如 “INITIALLY”、“INITIALLY DEFERRED” 等。不应存在特殊字符。
在 1.3 版本加入.
-
-
类 sqlalchemy.sql.compiler。SQLCompiler¶ Compiled
的默认实现。
将ClauseElement
对象编译为 SQL 字符串。
成员
__init__(), ansi_bind_rules, bind_names, bindname_escape_characters, binds, bindtemplate, compilation_bindtemplate, construct_expanded_state(), construct_params(), current_executable, default_from(), delete_extra_from_clause()、delete_limit_clause()、effective_returning、escaped_bind_names、get_select_precolumns()、group_by_clause()、has_out_parameters、implicit_returning、insert_prefetch、insert_single_values_expr、isupdate、literal_execute_params, order_by_clause(), params, positiontup, post_compile_params, postfetch, postfetch_lastrowid, render_literal_value(), render_table_with_column_in_update_from, returning, returning_precedes_values, sql_compiler、堆栈、translate_select_structure、update_from_clause()、update_limit_clause()、update_prefetch、update_tables_clause()、visit_override_binds()-
方法sqlalchemy.sql.compiler.SQLCompiler.
__init__(dialect: 方言, statement:ClauseElementNone, cache_key:CacheKeyNone=None, column_keys:Sequence[str]None=None, for_executemany: bool = False,linting: Linting = Linting.NO_LINTING, _supporting_against:SQLCompilerNone=None, **kwargs: Any)¶
构造新的SQLCompiler
对象。
参数
statement¶– 要编译的 ClauseElement
column_keys¶ – 要编译成 INSERT 或 UPDATE 语句的列名列表。
for_executemany¶ – INSERT / UPDATE 语句是否应该期望它们以 “executemany” 样式调用,这可能会影响语句返回 defaults 和 autoincrement / sequences 等值的预期方式。根据使用的后端和驱动程序,可能会禁用对检索这些值的支持,这意味着 SQL 表达式可能会内联呈现,RETURNING 可能不会呈现,等等。
kwargs¶ —— 超类要使用的其他关键字参数。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
ansi_bind_rules: bool = False¶
SQL 92 不允许在 SELECT 的 columns 子句中使用绑定参数,也不允许像 “?= ?”.如果目标驱动程序/DB 强制执行此标志,则编译器子类可以将此标志设置为 False
-
属性sqlalchemy.sql.compiler.SQLCompiler.
bind_names: Dict[BindParameter[Any], str]¶
BindParameter 实例的字典转换为实际存在于生成的 SQL 中的“编译”名称
-
属性sqlalchemy.sql.compiler.SQLCompiler.
bindname_escape_characters: ClassVar[Mapping[str, str]] = {' ': '_', '%': 'P', '(': 'A', ')': 'Z', '.': '_', ':': 'C', '[': '_', ']': '_'}¶
一个映射(例如 dict 或类似字符),包含对替换字符的键控字符查找,该字符将应用于 SQL 语句中使用的所有“绑定名称”,作为“转义”的一种形式;在 SQL 语句中呈现时,给定的字符将完全替换为 'replacement' 字符,并且对传递给Connection.execute()
等方法的参数字典中使用的传入名称执行类似的转换。
这允许bindparam()
和其他构造中使用的绑定参数名称包含任何任意字符,而无需担心目标数据库上根本不允许的字符。
第三方方言可以在此处建立自己的词典来替换默认映射,这将确保映射中的特定字符永远不会出现在绑定的参数名称中。
字典是在类创建时评估的,因此不能在运行时修改;首次声明类时,它必须存在于类中。
请注意,对于具有其他绑定参数规则的方言,例如 作为对主角的额外限制,SQLCompiler.bindparam_string()
方法可能需要增强。有关此示例,请参阅 cx_Oracle 编译器。
2.0.0rc1 版本的新Function。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
绑定: Dict[str, BindParameter[Any]]¶
将参数键绑定到 BindParameter 实例的字典。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
bindTemplate: str¶
template 来渲染基于 paramStyle 的绑定参数。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
compilation_bindtemplate: str¶
编译器在 positional paramstyle 应用程序之前用于渲染参数的模板
-
方法sqlalchemy.sql.compiler.SQLCompiler.
construct_expanded_state(params:_CoreSingleExecuteParamsNone=None, escape_names: bool = True)ExpandedState ¶
为给定参数集返回新的ExpandedState
。
对于使用 “expanding” 或其他后期呈现的参数的查询,此方法将同时提供最终的 SQL 字符串以及将用于特定参数集的参数。
2.0.0rc1 版本的新Function。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
construct_params(params:_CoreSingleExecuteParamsNone=None, extracted_parameters:Sequence[BindParameter[Any]]None=None, escape_names: bool = True, _group_number:intNone=None, _check: 布尔 = True, _no_postcompile: bool = False)_MutableCoreSingleExecuteParams ¶
返回 Bind 参数键和值的字典
-
属性sqlalchemy.sql.compiler.SQLCompiler.
current_executable¶
返回当前正在编译的 'executable'。
这是目前的Select
、Insert
和更新
、删除
、 正在编译的CompoundSelect
对象。具体来说,它被分配给self.stack
元素列表。
当编译上述语句时,它通常也会被分配给Compiler
对象。但是,所有 SQL 构造最终都是可嵌套的,并且visit_
方法永远不应查询此属性,因为它不能保证被分配,也不能保证与正在编译的当前语句相对应。
1.3.21 版本中的新功能: 为了与以前的版本兼容,请使用以下配方:statement = getattr(self, "current_executable", False) if statement is False: statement = self.stack[-1]["selectable"]
对于 1.4 及更高版本,请确保仅使用 .current_executable;“self.stack” 的格式可能会发生变化。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
default_from()¶
当 SELECT 语句没有 from,并且不附加 FROM 子句时调用。
使 Oracle Database 有机会将FROM DUAL
附加到字符串输出。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
delete_extra_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)¶
提供一个钩子来覆盖 DELETE 的生成。FROM 子句。
这可用于实现 DELETE..例如,USING 的 USING 示例。
MySQL 和 MSSQL 会覆盖此 URL。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
delete_limit_clause(delete_stmt)¶
为 MySQL 提供一个钩子,以将 LIMIT 添加到 DELETE
-
属性sqlalchemy.sql.compiler.SQLCompiler.
effective_returning¶
INSERT、UPDATE 或 DELETE 的有效“返回”列。
这要么是由编译器动态计算的所谓“隐式返回”列,要么是根据self.statement._returning
中存在的内容存在的列(使用._all_selected_columns
属性扩展为单个列),即使用UpdateBase.returning()
方法显式设置的列。
2.0 版的新Function。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
escaped_bind_names: util.immutabledict[str, str] = {}¶
在参数字典中查找时,必须转换为原始名称的绑定参数名称的延迟转义。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
get_select_precolumns(select, **kw)¶
在构建SELECT
语句时调用,position 就在 column list 之前。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
group_by_clause(select, **kw)¶
允许方言自定义 GROUP BY 的呈现方式。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
has_out_parameters = False¶
如果为 True,则存在设置了 isoutparam 标志的 bindparam() 对象。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
implicit_returning:Sequence[ColumnElement[Any]]None = None¶
返回顶级 INSERT 或 UPDATE 语句的列的“隐式”列表,用于接收新生成的列值。
2.0 版本中的新功能:implicit_returning
取代了之前的returning
集合,它不是通用的 RETURNING 集合,而是特定于“隐式返回”功能。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
insert_prefetch: Sequence[Column[Any]] = ()¶
在 INSERT 发生之前应评估其默认值的列列表
-
属性sqlalchemy.sql.compiler.SQLCompiler.
insert_single_values_expr¶
当在 VALUES 表达式中使用一组参数编译 INSERT 时,将在此处分配字符串,该字符串可用于插入批处理方案以重写 VALUES 表达式。
在 1.3.8 版本加入.
在 2.0 版更改: SQLAlchemy 的内置方言不再使用此集合,而是支持当前内部的_insertmanyvalues
集合,该集合仅由SQLCompiler
的 SQL 编译器。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
isupdate: bool = False¶
类级默认值,可以在实例级别设置,以定义此 Compiled 实例是否表示 INSERT/UPDATE/DELETE
-
属性sqlalchemy.sql.compiler.SQLCompiler.
literal_execute_params:FrozenSet[BindParameter[Any]] = frozenset({})¶
bindParameter 对象,这些对象在语句执行时呈现为文本值。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
order_by_clause(select, **kw)¶
允许 dialects 自定义 ORDER BY 的呈现方式。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
参数¶
返回嵌入到此编译对象中的 bind param 字典,用于存在的那些值。
另请参阅
如何将 SQL 表达式呈现为字符串,可能内联绑定参数?- 包括用于调试用例的使用示例。
-
attributesqlalchemy.sql.compiler.SQLCompiler.
positiontup:List[str]None = 无¶
对于使用 positional paramstyle 的已编译结构,将是一个字符串序列,按顺序指示绑定参数的名称。
这用于按正确的顺序渲染绑定参数,并与Compiled.params
字典结合使用以渲染参数。
此序列始终包含参数的未转义名称。
另请参阅
如何将 SQL 表达式呈现为字符串,可能内联绑定参数?- 包括用于调试用例的使用示例。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
post_compile_params: FrozenSet[BindParameter[Any]] = frozenset({})¶
bindParameter 对象,这些对象在语句执行时呈现为绑定参数占位符。
-
attributesqlalchemy.sql.compiler.SQLCompiler.
postfetch:List[Column[Any]]无¶
可以在 INSERT 或 UPDATE 之后后提取以接收服务器更新值的列列表
-
属性sqlalchemy.sql.compiler.SQLCompiler.
postfetch_lastrowid = False¶
如果为 True,并且在 insert 中使用 this,请使用 cursor.lastrowid 填充 result.inserted_primary_key。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
render_literal_value(value, type_)¶
将 bind 参数的值呈现为带引号的文本。
这用于不接受目标驱动程序/数据库上的 bind 参数的语句部分。
这应该由使用 DBAPI 的引用服务的子类来实现。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
render_table_with_column_in_update_from: bool = False¶
设置为 True 类范围,以指示多表 UPDATE 语句中的 SET 子句应使用表名限定列(即仅限 MySQL)
-
属性sqlalchemy.sql.compiler.SQLCompiler.
返回¶
向后兼容性;返回 effective_returning 集合。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
returning_precedes_values: bool = False¶
设置为 True 类范围以在 VALUES 或 WHERE 子句(即 MSSQL)之前生成 RETURNING 子句
-
属性sqlalchemy.sql.compiler.SQLCompiler.
sql_compiler¶
-
attributesqlalchemy.sql.compiler.SQLCompiler.
stack: List[_CompilerStackEntry]¶
主要语句(如 SELECT、INSERT、UPDATE、DELETE)在此堆栈中使用条目格式进行跟踪。
-
属性sqlalchemy.sql.compiler.SQLCompiler.
translate_select_structure: Any = None¶
如果不是None
,则应为接受(select_stmt、 **kw)
并返回一个 select 对象。这主要用于结构更改,以适应 LIMIT/OFFSET 方案
-
方法sqlalchemy.sql.compiler.SQLCompiler.
update_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)¶
提供一个钩子来覆盖 UPDATE 的生成..FROM 子句。
MySQL 和 MSSQL 会覆盖此 URL。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
update_limit_clause(update_stmt)¶
为 MySQL 提供一个钩子,以将 LIMIT 添加到 UPDATE
-
属性sqlalchemy.sql.compiler.SQLCompiler.
update_prefetch: Sequence[Column[Any]] = ()¶
在 UPDATE 发生之前应评估 onupdate 默认值的列列表
-
方法sqlalchemy.sql.compiler.SQLCompiler.
update_tables_clause(update_stmt, from_table, extra_froms, **kw)¶
提供一个钩子以覆盖 UPDATE 语句中的初始 table 子句。
MySQL 会覆盖此 URL。
-
方法sqlalchemy.sql.compiler.SQLCompiler.
visit_override_binds(override_binds, **kw)¶
SQL 编译 _OverrideBinds 的嵌套元素,并换出 bindparams。
通常不需要编译 _OverrideBinds;当要使用已缓存的语句,已经执行编译,并且在执行时只应换入绑定的参数时,应使用它。
但是,有一些测试用例会执行此对象,此外,已知 ORM 子查询加载器会将包含此构造的表达式输入到新查询中(在 #11173 中发现),因此它也必须在编译时执行正确的作。
-
-
类 sqlalchemy.sql.compiler。StrSQLCompiler¶ 一个 SQLCompiler
子类,它允许将一小部分非标准 SQL 功能渲染为字符串值。
每当 Core 表达式时调用StrSQLCompiler
元素直接字符串化,而无需调用ClauseElement.compile()
方法。 它可以渲染有限的集合 的非标准 SQL 结构,以协助基本字符串化, 但是,对于更实质性的自定义或特定于方言的 SQL 结构, 有必要利用ClauseElement.compile()
径直。-
方法sqlalchemy.sql.compiler.StrSQLCompiler.
delete_extra_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)¶
提供一个钩子来覆盖 DELETE 的生成。FROM 子句。
这可用于实现 DELETE..例如,USING 的 USING 示例。
MySQL 和 MSSQL 会覆盖此 URL。
-
方法sqlalchemy.sql.compiler.StrSQLCompiler.
update_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)¶
提供一个钩子来覆盖 UPDATE 的生成..FROM 子句。
MySQL 和 MSSQL 会覆盖此 URL。
-
-
类 sqlalchemy.engine 中。AdaptedConnection¶
用于支持 DBAPI 协议的已调整连接对象的接口。
由 asyncio dialects 使用,在驱动程序提供的 asyncio 连接/光标 API 之上提供同步样式的 pep-249 门面。
在 1.4.24 版本加入.-
属性sqlalchemy.engine.AdaptedConnection.
driver_connection¶
驱动程序在 connect 后返回的 connection 对象。
-
方法sqlalchemy.engine.AdaptedConnection.
run_async(fn: Callable[[Any], Awaitable[_T]])_T ¶
运行给定函数返回的 awaitable,该函数将传递原始 asyncio 驱动程序连接。
这用于在 “同步” 方法(如连接池事件处理程序)的上下文中,在驱动程序连接上调用仅限 awaitable 的方法。
例如:engine = create_async_engine(...) @event.listens_for(engine.sync_engine, "connect") def register_custom_types( dbapi_connection, # ... ): dbapi_connection.run_async( lambda connection: connection.set_type_codec( "MyCustomType", encoder, decoder, ... ) )
在 1.4.30 版本加入.
-