核心内部结构¶


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


对象名称

描述


AdaptedConnection (自适应连接)


用于支持 DBAPI 协议的已调整连接对象的接口。


绑定类型


定义将语句中绑定参数的类型信息传递给数据库驱动程序的不同方法。


编译


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

DBAPIConnection


协议,表示 PEP 249 数据库连接。


DBAPICurs或


协议表示 PEP 249 数据库游标。

DBAPIType


协议表示 PEP 249 数据库类型。

DDLCompiler


默认方言


Dialect 的默认实现


DefaultExecutionContext (默认执行上下文)


方言


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

ExecutionContext


对应于单个执行的 Dialect 的 messenger 对象。


展开状态


表示在为语句生成 “expanded” 和 “post compile” 绑定参数时使用的状态。


GenericType编译器


确定


标识符准备器


根据选项处理标识符的引用和大小写折叠。

SQLCompiler


Compiled 的默认实现。

StrSQLCompiler


一个 SQLCompiler 子类,它允许将一小部分非标准 SQL 功能渲染为字符串值。


sqlalchemy.engine 中。BindTyping(绑定类型化)¶


定义将语句中绑定参数的类型信息传递给数据库驱动程序的不同方法。


2.0 版的新Function。


类签名


class sqlalchemy.engine.BindTypingenum.枚举


属性 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_SELECTInsertmanyvaluesSentinelOpts.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 表达式。


Compiled 对象的 __str__ 方法应生成语句的实际文本。编译的对象是 特定于其底层数据库方言,并且还可以 或可能不特定于 特定的 BIND 参数集。 在任何情况下都不应 编译对象依赖于这些绑定参数的实际值,即使它可能将这些值引用为默认值。


方法 sqlalchemy.engine.Compiled。__init__dialect 方言, statement:ClauseElementNone, schema_translate_map:SchemaTranslateMapTypeNone=None, render_schema_translate: bool = Falsecompile_kwargs Mapping[str Any] = {}


构造一个新的 Compiled 对象。


参数

  • dialect- 要编译的 dialect


  • statement– 要编译的 ClauseElement

  • schema_translate_map


    形成结果 SQL 时要翻译的模式名称字典


    另请参阅


    架构名称的翻译


  • compile_kwargs – 将传递给 Compiled.process() 的初始调用的额外 kwargs。


属性 sqlalchemy.engine.Compiled。cache_key:CacheKeyNone =


创建此 Compiled 对象。


这用于需要访问原始 CacheKey 实例 实例,通常是为了协调 BindParameter 对象的原始列表,其中包含在每次调用时生成的每个语句列表。


属性 sqlalchemy.engine.Compiled。compile_state:CompileStateNone =


可选的 CompileState 对象,用于维护编译器使用的其他状态。


主要可执行对象,如 Insert更新删除Select 将在编译时生成此状态,以便计算有关对象的其他信息。对于要执行的顶级对象,状态可以存储在此处,它也可以适用于结果集处理。


在 1.4 版本加入.


方法 sqlalchemy.engine.Compiled。construct_paramsparams:_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。


另请参阅


连接对象 - 在 PEP 249


类签名


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. cursor DBAPICursor

方法 sqlalchemy.engine.interfaces.DBAPIConnection. rollback)→ None

sqlalchemy.engine.interfaces 中。DBAPICursor


协议表示 PEP 249 数据库游标。


2.0 版的新Function。


另请参阅


光标对象 - 在 PEP 249


类签名


sqlalchemy.engine.interfaces.DBAPICursor typing_extensions.协议


attribute sqlalchemy.engine.interfaces.DBAPICursor. arraysize int

method sqlalchemy.engine.interfaces.DBAPICursor. callprocprocname strparameters Sequence[Any] = Ellipsis Any

方法 sqlalchemy.engine.interfaces.DBAPICursor. close None

属性 sqlalchemy.engine.interfaces.DBAPICursor. 说明


Cursor 的 description 属性。


另请参阅


cursor.description - 在 PEP 249


method sqlalchemy.engine.interfaces.DBAPICursor. executeoperation Any, parameters:Sequence[Any]Mapping[str,Any]None=None) Any

method sqlalchemy.engine.interfaces.DBAPICursor. executemanyoperation Any, parameters:Sequence[Sequence[Any]]Sequence[Mapping[str,Any]] Any

method sqlalchemy.engine.interfaces.DBAPICursor. fetchall 序列[Any]

method sqlalchemy.engine.interfaces.DBAPICursor. fetchmanysize int = Ellipsis 序列[Any]

method sqlalchemy.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. setinputsizessizes Sequence[Any] None

方法 sqlalchemy.engine.interfaces.DBAPICursor. setoutputsizesize Anycolumn Any None

sqlalchemy.engine.interfaces 中。DBAPIType 语言¶


协议表示 PEP 249 数据库类型。


2.0 版的新Function。


另请参阅


类型对象 - 在 PEP 249


类签名


sqlalchemy.engine.interfaces.DBAPIType typing_extensions.协议


sqlalchemy.sql.compiler。DDLCompiler

method sqlalchemy.sql.compiler.DDLCompiler. __init__dialect 方言, statement:ClauseElementNone, schema_translate_map:SchemaTranslateMapTypeNone=None, render_schema_translate: bool = Falsecompile_kwargs Mapping[str Any] = {}


继承自 sqlalchemy.sql.compiler.Compiled.__init__ Compiled 的方法


构造一个新的 Compiled 对象。


参数

  • dialect- 要编译的 dialect


  • statement– 要编译的 ClauseElement

  • schema_translate_map


    形成结果 SQL 时要翻译的模式名称字典


    另请参阅


    架构名称的翻译


  • compile_kwargs – 将传递给 Compiled.process() 的初始调用的额外 kwargs。


属性 sqlalchemy.sql.compiler.DDLCompiler. cache_key:CacheKeyNone = None


继承自CompiledCompiled.cache_key属性


创建此 Compiled 对象。


这用于需要访问原始 CacheKey 实例 实例,通常是为了协调 BindParameter 对象的原始列表,其中包含在每次调用时生成的每个语句列表。


属性 sqlalchemy.sql.compiler.DDLCompiler. compile_state:CompileStateNone = None


继承自CompiledCompiled.compile_state属性


可选的 CompileState 对象,用于维护编译器使用的其他状态。


主要可执行对象,如 Insert更新删除Select 将在编译时生成此状态,以便计算有关对象的其他信息。对于要执行的顶级对象,状态可以存储在此处,它也可以适用于结果集处理。


在 1.4 版本加入.


方法 sqlalchemy.sql.compiler.DDLCompiler. construct_paramsparams:_CoreSingleExecuteParamsNone=None, extracted_parameters:Sequence[BindParameter[Any]]None=None, escape_names: bool = True→_MutableCoreSingleExecuteParamsNone


返回此编译对象的 bind params。


参数


params – 字符串/对象对的字典,其值将覆盖编译到语句中的绑定值。


方法 sqlalchemy.sql.compiler.DDLCompiler. define_constraint_remote_tableconstrainttablepreparer


格式化 CREATE CONSTRAINT 子句的远程表子句。


属性 sqlalchemy.sql.compiler.DDLCompiler. dml_compile_state:CompileStateNone = None


继承自CompiledCompiled.dml_compile_state属性


在分配 .isinsert、.isupdate 或 .isdelete 的同一点分配的可选 CompileState


这通常与 .compile_state 对象相同,但 ORMFromStatementCompileState 等情况除外 对象。


在 1.4.40 版本加入.


属性 sqlalchemy.sql.compiler.DDLCompiler. execution_options _ExecuteOptions = {}


继承自CompiledCompiled.execution_options属性


从语句传播的执行选项。在某些情况下,语句的子元素可以修改这些内容。


属性 sqlalchemy.sql.compiler.DDLCompiler. 参数


继承自CompiledCompiled.params属性


返回此编译对象的 bind params。


属性 sqlalchemy.sql.compiler.DDLCompiler. sql_compiler

属性 sqlalchemy.sql.compiler.DDLCompiler. 状态CompilerState


编译器状态的描述


attribute sqlalchemy.sql.compiler.DDLCompiler. statement:ClauseElementNone = None


继承自CompiledCompiled.statement属性


要编译的语句。


属性 sqlalchemy.sql.compiler.DDLCompiler. 字符串 str = ''


继承自CompiledCompiled.string属性


语句的字符串表示形式


sqlalchemy.engine.default。默认方言


Dialect 的默认实现


成员


bind_typingcolspecsconnect()、construct_argumentscreate_connect_args()create_xid()cte_follows_insertdbapidbapi_exception_translation_mapddl_compilerdefault_isolation_leveldefault_metavalue_tokendefault_schema_namedefault_sequence_basedelete_executemany_returningdelete_returningdelete_returning_multifromdenormalize_name()div_is_floordivdo_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_typesengine_created()exclude_set_input_sizesexecute_sequence_formatexecution_ctx_clsfavor_returning_over_lastrowidfull_returningget_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_terminateidentifier_preparerimport_dbapi()include_set_input_sizesinitialize()inline_commentsinsert_executemany_returninginsert_executemany_returning_sort_by_parameter_orderinsert_returninginsertmanyvalues_implicit_sentinelinsertmanyvalues_max_parametersinsertmanyvalues_page_sizeis_asyncis_disconnect()label_lengthload_provisioning()loaded_dbapimax_identifier_length名称normalize_name()on_connect()on_connect_url()paramstyle位置preexecute_autoincrement_sequencespreparerreflection_optionsreset_isolation_level()returns_native_bytessequences_optionalserver_side_cursorsserver_version_infoset_connection_execution_options()set_engine_execution_options()set_isolation_level()statement_compilersupports_altersupports_commentssupports_constraint_commentssupports_default_metavaluesupports_default_valuessupports_empty_insertsupports_identity_columnssupports_multivalues_insertsupports_native_booleansupports_native_decimal supports_native_enumsupports_native_uuidsupports_sane_multi_rowcountsupports_sane_rowcountsupports_sane_rowcount_returningsupports_sequencessupports_server_side_cursorssupports_simple_order_by_labelsupports_statement_cache tuple_in_valuestype_compilertype_compiler_clstype_compiler_instancetype_descriptor()update_executemany_returningupdate_returningupdate_returning_multifromuse_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 获取新连接时需要执行每个连接编程步骤的方言。


参数

结果


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


属性 sqlalchemy.engine.default.DefaultDialect. construct_arguments:List[Tuple[Type[SchemaItemClauseElement],Mapping[str,Any]]]None = None


继承自DialectDialect.construct_arguments属性


用于各种 SQLAlchemy 构造(通常是架构项)的可选参数说明符集。


要实现,请建立为一系列 Tuples,如下所示:

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


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


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


方法 sqlalchemy.engine.default.DefaultDialect. create_connect_argsurl


构建与 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)

参数


url—— 一个 URL 对象


结果


一个 (*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. dbapiModuleTypeNone¶


对 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_namename


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


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


属性 sqlalchemy.engine.default.DefaultDialect. div_is_floordiv: bool = True


Target 数据库将 / Division 运算符视为“楼层划分”


方法 sqlalchemy.engine.default.DefaultDialect. do_begindbapi_connection


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


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


参数


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


方法 sqlalchemy.engine.default.DefaultDialect. do_begin_twophaseconnection Connectionxid Any


继承自DialectDialect.do_begin_twophase() 方法


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


参数

方法 sqlalchemy.engine.default.DefaultDialect. do_closedbapi_connection


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


这个钩子被 Pool 调用 当连接已 已从池中分离,或正在超出正常范围返回 池的容量。


方法 sqlalchemy.engine.default.DefaultDialect. do_commitdbapi_connection


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


参数


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


method sqlalchemy.engine.default.DefaultDialect. do_commit_twophaseconnection Connectionxid Anyis_prepared: bool = Truerecover bool = False


继承自DialectDialect.do_commit_twophase() 方法


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


参数

方法 sqlalchemy.engine.default.DefaultDialect. do_executecursorstatementparameterscontext=None


提供 cursor.execute(statement, parameters) .


method sqlalchemy.engine.default.DefaultDialect. do_execute_no_params(cursorstatementcontext=None


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


不应发送 parameter collection。


方法 sqlalchemy.engine.default.DefaultDialect. do_executemanycursorstatementparameterscontext=None


提供 cursor.executemany(statement, parameters) .


方法 sqlalchemy.engine.default.DefaultDialect. do_pingdbapi_connection DBAPIConnection bool


ping DBAPI 连接,如果连接可用,则返回 True。


方法 sqlalchemy.engine.default.DefaultDialect. do_prepare_twophaseconnection Connectionxid Any


继承自DialectDialect.do_prepare_twophase() 方法


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


参数

方法 sqlalchemy.engine.default.DefaultDialect. do_recover_twophaseconnection Connection List[Any]


继承自DialectDialect.do_recover_twophase() 方法


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


参数


connection—— 一个 Connection


方法 sqlalchemy.engine.default.DefaultDialect. do_release_savepointconnectionname


在连接上释放命名的 Savepoint。


参数

方法 sqlalchemy.engine.default.DefaultDialect. do_rollbackdbapi_connection


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


参数


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


方法 sqlalchemy.engine.default.DefaultDialect. do_rollback_to_savepointconnectionname


回滚到命名 Savepoint 的连接。


参数

方法 sqlalchemy.engine.default.DefaultDialect. do_rollback_twophaseconnection Connectionxid Anyis_prepared: bool = Truerecover bool = False


继承自 Dialect.do_rollback_twophase() Dialect 的方法


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


参数

方法 sqlalchemy.engine.default.DefaultDialect. do_savepointconnectionname


创建具有给定名称的 Savepoint。


参数

method sqlalchemy.engine.default.DefaultDialect. do_set_input_sizes游标DBAPICursor,list_of_tuples_GenericSetInputSizesType上下文ExecutionContext Any


继承自DialectDialect.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_terminatedbapi_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_createdengine Engine


继承自DialectDialect.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


DefaultExecutionContext 的别名


属性 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_clsurl url Type[方言]


继承自 Dialect.get_async_dialect_cls() Dialect 的方法


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


默认情况下,这是 Dialect.get_dialect_cls() 和 只返回 CLS。如果方言提供 同步版本和异步版本,如 psycopg 驱动程序。


版本 2 的新Function。


方法 sqlalchemy.engine.default.DefaultDialect. get_check_constraintsconnection Connectiontable_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_columnsconnection Connectiontable_name: str, schema:strNone=None, **kw Any List[ReflectedColumn]


继承自DialectDialect.get_columns() 方法


返回有关 table_name 中的列的信息。


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


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


方法 sqlalchemy.engine.default.DefaultDialect. get_default_isolation_leveldbapi_conn


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


可以被子类覆盖,以便为无法可靠地检索实际隔离级别的数据库提供“回退”隔离级别。


默认情况下,调用 Interfaces.get_isolation_level() 方法,传播引发的任何异常。


在 1.3.22 版本加入.


类方法 sqlalchemy.engine.default.DefaultDialect. get_dialect_clsurl url Type[Dialect]


继承自DialectDialect.get_dialect_cls() 方法


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


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


默认情况下,这只返回 cls.


方法 sqlalchemy.engine.default.DefaultDialect. get_dialect_pool_classurl URL Type[Pool]


返回要用于给定 URL 的 Pool 类


方法 sqlalchemy.engine.default.DefaultDialect. get_driver_connection连接


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


对于使用符合 DBAPI 的驱动程序的普通方言,此调用将仅返回作为参数传递的连接。对于改为改编不符合 DBAPI 的驱动程序的方言,例如改编 asyncio 驱动程序时,此调用将返回驱动程序返回的类似连接的对象。


在 1.4.24 版本加入.


方法 sqlalchemy.engine.default.DefaultDialect. get_foreign_keysconnection Connectiontable_name: str schema:strNone=None, **kw Any List[ReflectedForeignKeyConstraint]


继承自DialectDialect.get_foreign_keys() 方法


在 table_name 中返回有关 foreign_keys 的信息。


给定一个 Connection,一个字符串 table_name 和可选的字符串架构返回 foreign key information 作为对应于 ReflectedForeignKeyConstraint 字典。


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


方法 sqlalchemy.engine.default.DefaultDialect. get_indexesconnection Connectiontable_name: str, schema:strNone=None, **kw Any List[ReflectedIndex]


继承自DialectDialect.get_indexes() 方法


返回有关 table_name 中的索引的信息。


给定一个 Connection,一个字符串 table_name 和可选的字符串架构,则返回 index information 作为对应于 ReflectedIndex 字典。


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


方法 sqlalchemy.engine.default.DefaultDialect. get_isolation_leveldbapi_connection: DBAPIConnection Literal['SERIALIZABLE' 'REPEATABLE READ' 'READ COMMITTED' 'READ UNCOMMITTED' 'AUTOCOMMIT']


继承自DialectDialect.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_valuesdbapi_conn: DBAPIConnection List[Literal['SERIALIZABLE' 'REPEATABLE READ' 'READ COMMITTED' 'READ UNCOMMITTED' 'AUTOCOMMIT']]


继承自 Dialect.get_isolation_level_values() Dialect 的方法


返回此方言接受的字符串隔离级别名称序列。


可用名称应使用以下约定:


  • 使用 UPPERCASE 名称。隔离级别方法将接受小写名称,但这些名称在传递给方言之前被规范化为 UPPERCASE。


  • 单独的单词应该用空格分隔,而不是下划线,例如 可重复读取。隔离级别名称在传递给方言之前会将下划线转换为空格。


  • 在后端支持的范围内,四个标准隔离名称的名称应为 READ UNCOMMITTEDREAD COMMITTED, REPEATABLE READSERIALIZABLE


  • 如果 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_namesconnection 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_constraintsconnection**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_columnsconnection**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_keysconnection**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_indexesconnection**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_constraintconnection**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_commentconnection**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_optionsconnection**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_constraintsconnection**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_constraintconnection Connectiontable_name: str, schema:strNone=None, **kw Any ReflectedPrimaryKeyConstraint


继承自DialectDialect.get_pk_constraint() 方法


返回有关 table_name' 上的主键约束的信息。


给定一个 Connection,一个字符串 table_name 和可选的字符串架构返回 primary key 信息作为字典,对应于 ReflectedPrimaryKeyConstraint 字典。


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


方法 sqlalchemy.engine.default.DefaultDialect. get_schema_namesconnection Connection**kw Any List[str]


继承自DialectDialect.get_schema_names() 方法


返回数据库中所有可用的架构名称的列表。


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


方法 sqlalchemy.engine.default.DefaultDialect. get_sequence_namesconnection Connection, schema:strNone=None, **kw Any List[str]


继承自DialectDialect.get_sequence_names() 方法


返回数据库中所有可用的序列名称的列表。


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


参数


schema- 要查询的 schema 名称,如果不是默认 schema。


在 1.4 版本加入.


方法 sqlalchemy.engine.default.DefaultDialect. get_table_commentconnection Connectiontable_name: str, schema:strNone=None, **kw Any ReflectedTableComment


继承自DialectDialect.get_table_comment() 方法


返回 table_name 标识的表的 “comment”。


给定一个字符串table_name和一个可选的字符串架构,返回 table 注释信息作为对应的字典 ReflectedTableComment 字典。


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


加注


NotImplementedError 对于不支持注释的方言。


在 1.2 版本加入.


方法 sqlalchemy.engine.default.DefaultDialect. get_table_namesconnection Connection, schema:strNone=None, **kw Any List[str]


继承自DialectDialect.get_table_names() 方法


返回 schema 的表名列表。


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


方法 sqlalchemy.engine.default.DefaultDialect. get_table_optionsconnection Connectiontable_name: str, schema:strNone=None, **kw Any Dict[str Any]


继承自DialectDialect.get_table_options() 方法


返回 table_name 时指定的选项字典 已创建。


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


方法 sqlalchemy.engine.default.DefaultDialect. get_temp_table_namesconnection 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_namesconnection Connection, schema:strNone=None, **kw Any List[str]


继承自DialectDialect.get_temp_view_names() 方法


返回给定连接上的临时视图名称列表(如果底层后端支持)。


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


方法 sqlalchemy.engine.default.DefaultDialect. get_unique_constraintsconnection Connectiontable_namestr 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_definitionconnection Connectionview_name: str, schema:strNone=None, **kw Any str


继承自DialectDialect.get_view_definition() 方法


返回普通视图或具体化视图定义。


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


给定一个 Connection,一个字符串 view_name 和可选的字符串架构返回视图定义。


方法 sqlalchemy.engine.default.DefaultDialect. get_view_namesconnection Connection, schema:strNone=None, **kw Any List[str]


继承自DialectDialect.get_view_names() 方法


返回数据库中所有可用的非具体化视图名称的列表。


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


参数


schema- 要查询的 schema 名称,如果不是默认 schema。


方法 sqlalchemy.engine.default.DefaultDialect. has_indexconnectiontable_nameindex_nameschema=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_schemaconnection Connectionschema_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_sequenceconnection Connectionsequence_name: str, schema:strNone=None, **kw Any bool


继承自DialectDialect.has_sequence() 方法


检查数据库中是否存在特定序列。


给定一个 Connection 对象和一个字符串 sequence_name,如果数据库中存在给定序列,则返回 True,否则返回 False


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


方法 sqlalchemy.engine.default.DefaultDialect. has_tableconnection Connectiontable_namestr schema:strNone=None, **kw Any 布尔值¶


继承自DialectDialect.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 模块


继承自DialectDialect.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. initializeconnection


在战略性创建具有连接的方言期间调用。


允许 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_disconnecteconnectioncursor


如果给定的 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_namename


如果检测到 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() - 允许控制 DBAPI connect() 序列本身。


Dialect.on_connect_url() - 取代 Dialect.on_connect() 来接收 URL 对象。


方法 sqlalchemy.engine.default.DefaultDialect. on_connect_urlurl URL→Callable[[Any],Any]无


继承自DialectDialect.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。


attribute sqlalchemy.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. 准备器


IdentifierPreparer 的别名


属性 sqlalchemy.engine.default.DefaultDialect. reflection_options: Sequence[str] = ()


继承自DialectDialect.reflection_options属性


字符串名称序列,指示可以在 Table 对象上建立的关键字参数,当使用 Table.autoload_with 时,该参数将作为 “反射选项” 传递。


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


方法 sqlalchemy.engine.default.DefaultDialect. reset_isolation_leveldbapi_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_optionsconnection Connectionopts Mapping[str Any] 没有


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


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


在 1.4 版本加入.


方法 sqlalchemy.engine.default.DefaultDialect. set_engine_execution_optionsengine Engineopts Mapping[str Any]


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


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


方法 sqlalchemy.engine.default.DefaultDialect. set_isolation_leveldbapi_connection DBAPIConnection级别 Literal['SERIALIZABLE' 'REPEATABLE READ' 'READ COMMITTED' 'READ UNCOMMITTED' 'AUTOCOMMIT']


继承自DialectDialect.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


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


属性 sqlalchemy.engine.default.DefaultDialect. supports_sane_rowcount: bool = True


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


属性 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


GenericTypeCompiler 的别名


属性 sqlalchemy.engine.default.DefaultDialect. type_compiler_instance:TypeCompiler


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


2.0 版的新Function。


方法 sqlalchemy.engine.default.DefaultDialect. type_descriptortypeobj)¶


给定来自 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_returninguse_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_typingcolspecsconnect()、construct_argumentscreate_connect_args()create_xid()cte_follows_insertdbapidbapi_exception_translation_mapddl_compilerdefault_isolation_leveldefault_metavalue_tokendefault_schema_namedefault_sequence_basedelete_executemany_returningdelete_returningdelete_returning_multifromdenormalize_name()div_is_floordivdo_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_typesengine_created()exclude_set_input_sizesexecute_sequence_formatexecution_ctx_clsfavor_returning_over_lastrowidget_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_terminateidentifier_preparerimport_dbapi()、include_set_input_sizesinitialize()inline_commentsinsert_executemany_returninginsert_executemany_returning_sort_by_parameter_orderinsert_returning insertmanyvalues_implicit_sentinelinsertmanyvalues_max_parametersinsertmanyvalues_page_sizeis_asyncis_disconnect()label_lengthload_provisioning()loaded_dbapimax_identifier_length名称normalize_name()on_connect()on_connect_url()paramstyle位置preexecute_autoincrement_sequences准备者reflection_optionsreset_isolation_level()returns_native_bytessequences_optionalserver_side_cursorsserver_version_infoset_connection_execution_options()set_engine_execution_options()set_isolation_level()statement_compilersupports_altersupports_commentssupports_constraint_commentssupports_default_metavaluesupports_default_valuessupports_empty_insertsupports_identity_columnssupports_multivalues_insertsupports_native_booleansupports_native_decimal supports_native_enumsupports_native_uuidsupports_sane_multi_rowcountsupports_sane_rowcountsupports_sequencessupports_server_side_cursorssupports_simple_order_by_labelsupports_statement_cachetuple_in_values type_compilertype_compiler_clstype_compiler_instancetype_descriptor()update_executemany_returningupdate_returningupdate_returning_multifromuse_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 获取新连接时需要执行每个连接编程步骤的方言。


参数

结果


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_usingpostgresql_where, nad postgresql_ops.指定给 Index 的构造函数的任何其他参数 前缀为 postgresql_ 将引发 ArgumentError


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


方法 sqlalchemy.engine.Dialect 中。create_connect_argsurlurl 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)

参数


url—— 一个 URL 对象


结果


一个 (*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_levelIsolationLevelNone¶


隐式存在于新连接上的隔离


属性 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_namename str str


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


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


属性 sqlalchemy.engine.Dialect 的 Dialect 中。div_is_floordiv: bool (布尔值)¶


Target 数据库将 / Division 运算符视为“楼层划分”


方法 sqlalchemy.engine.Dialect 中。do_begindbapi_connection PoolProxiedConnection


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


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


参数


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


方法 sqlalchemy.engine.Dialect 中。do_begin_twophaseconnection Connectionxid Any


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


参数

方法 sqlalchemy.engine.Dialect 中。do_closedbapi_connection: DBAPIConnection


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


这个钩子被 Pool 调用 当连接已 已从池中分离,或正在超出正常范围返回 池的容量。


方法 sqlalchemy.engine.Dialect 中。do_commitdbapi_connection PoolProxiedConnection


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


参数


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


方法 sqlalchemy.engine.Dialect 中。do_commit_twophaseconnection 连接xid 任意is_prepared: bool = Truerecover bool = False


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


参数

方法 sqlalchemy.engine.Dialect 中。do_executecursor DBAPICursorstatement str, parameters:Sequence[Any]Mapping[str,Any]None, context:ExecutionContextNone=None


提供 cursor.execute(statement, parameters) .


方法 sqlalchemy.engine.Dialect 中。do_execute_no_paramscursor DBAPICursorstatement str, context:ExecutionContextNone=None)


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


不应发送 parameter collection。


方法 sqlalchemy.engine.Dialect 中。do_executemanycursor DBAPICursorstatement str, parameters:Sequence[Sequence[Any]]Sequence[Mapping[str,Any]], context:ExecutionContextNone=None


提供 cursor.executemany(statement, parameters) .


方法 sqlalchemy.engine.Dialect 中。do_pingdbapi_connection DBAPIConnection bool


ping DBAPI 连接,如果连接可用,则返回 True。


方法 sqlalchemy.engine.Dialect 中。do_prepare_twophaseconnection Connectionxid Any


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


参数

方法 sqlalchemy.engine.Dialect 中。do_recover_twophaseconnection 连接 列表[任意]


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


参数


connection—— 一个 Connection


方法 sqlalchemy.engine.Dialect 中。do_release_savepointconnection Connectionname str


在连接上释放命名的 Savepoint。


参数

方法 sqlalchemy.engine.Dialect 中。do_rollbackdbapi_connection PoolProxiedConnection


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


参数


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


方法 sqlalchemy.engine.Dialect 中。do_rollback_to_savepointconnection Connectionname str


回滚到命名 Savepoint 的连接。


参数

方法 sqlalchemy.engine.Dialect 中。do_rollback_twophaseconnection 连接xid 任意is_prepared: bool = True恢复 bool = False


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


参数

方法 sqlalchemy.engine.Dialect 中。do_savepointconnection Connectionname str


创建具有给定名称的 Savepoint。


参数

方法 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_terminatedbapi_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_createdengine 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_clsurl url 类型[方言]


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


默认情况下,这是 Dialect.get_dialect_cls() 和 只返回 CLS。如果方言提供 同步版本和异步版本,如 psycopg 驱动程序。


版本 2 的新Function。


方法 sqlalchemy.engine.Dialect 中。get_check_constraintsconnection 连接table_name: str, schema:strNone=None, **kw Any 列表[ReflectedCheckConstraint]


返回有关 table_name 中的 check 约束的信息。


给定一个字符串table_name和一个可选的字符串架构,将 check 约束信息作为对应于 ReflectedCheckConstraint 字典的字典列表返回。


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


方法 sqlalchemy.engine.Dialect 中。get_columnsconnection 连接table_name: str, schema:strNone=None, **kw Any 列表[反射柱]


返回有关 table_name 中的列的信息。


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


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


方法 sqlalchemy.engine.Dialect 中。get_default_isolation_leveldbapi_conn DBAPIConnection Literal['SERIALIZABLE' 'REPEATABLE READ' 'READ COMMITTED' '读取未提交' '自动提交']


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


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


该方法必须返回支持隔离级别设置的方言的值,因为当对每个连接进行隔离级别更改时,此级别将恢复为该级别。


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


在 1.3.22 版本加入.


类方法 sqlalchemy.engine.Dialect 的 Dialect 中。get_dialect_clsurl url 类型[方言]


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


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


默认情况下,这只返回 cls.


方法 sqlalchemy.engine.Dialect 中。get_dialect_pool_classurl url Type[矿池]


返回要用于给定 URL 的 Pool 类


方法 sqlalchemy.engine.Dialect 中。get_driver_connection连接DBAPIConnection Any


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


对于使用符合 DBAPI 的驱动程序的普通方言,此调用将仅返回作为参数传递的连接。对于改为改编不符合 DBAPI 的驱动程序的方言,例如改编 asyncio 驱动程序时,此调用将返回驱动程序返回的类似连接的对象。


在 1.4.24 版本加入.


方法 sqlalchemy.engine.Dialect 中。get_foreign_keysconnection 连接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_indexesconnection 连接table_name: str, schema:strNone=None, **kw Any 列表[反射索引]


返回有关 table_name 中的索引的信息。


给定一个 Connection,一个字符串 table_name 和可选的字符串架构,则返回 index information 作为对应于 ReflectedIndex 字典。


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


方法 sqlalchemy.engine.Dialect 中。get_isolation_leveldbapi_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_valuesdbapi_conn: DBAPIConnection List[Literal['SERIALIZABLE' 'REPEATABLE READ' 'READ COMMITTED' 'READ UNCOMMITTED' 'AUTOCOMMIT']]


返回此方言接受的字符串隔离级别名称序列。


可用名称应使用以下约定:


  • 使用 UPPERCASE 名称。隔离级别方法将接受小写名称,但这些名称在传递给方言之前被规范化为 UPPERCASE。


  • 单独的单词应该用空格分隔,而不是下划线,例如 可重复读取。隔离级别名称在传递给方言之前会将下划线转换为空格。


  • 在后端支持的范围内,四个标准隔离名称的名称应为 READ UNCOMMITTEDREAD COMMITTED, REPEATABLE READSERIALIZABLE


  • 如果 dialect 支持 autocommit 选项,则应使用隔离级别名称 AUTOCOMMIT 提供该选项。


  • 也可能存在其他隔离模式,前提是它们以 UPPERCASE 命名并使用空格而不是下划线。


使用此功能是为了让默认方言可以检查 给定的隔离级别参数有效,否则会引发 ArgumentError 的 Argument 错误


DBAPI 连接将传递给该方法,以防方言需要询问连接本身以确定此列表,但预计大多数后端将返回硬编码的值列表。如果方言支持 “AUTOCOMMIT”,则该值也应出现在返回的序列中。


默认情况下,该方法会引发 NotImplementedError。如果 dialect 没有实现此方法,则默认 dialect 在将给定的隔离级别值传递给 Dialect.set_isolation_level() 方法之前不会对该值执行任何检查。这是为了允许与可能尚未实现此方法的第三方方言向后兼容。


2.0 版的新Function。


方法 sqlalchemy.engine.Dialect 中。get_materialized_view_namesconnection 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_constraintsconnection 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_columnsconnection 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_keysconnection 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_indexesconnection 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_constraintconnection 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_commentconnection 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_optionsconnection 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_constraintsconnection 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_constraintconnection 连接table_name: str, schema:strNone=None, **kw Any ReflectedPrimaryKeyConstraint 函数¶


返回有关 table_name' 上的主键约束的信息。


给定一个 Connection,一个字符串 table_name 和可选的字符串架构返回 primary key 信息作为字典,对应于 ReflectedPrimaryKeyConstraint 字典。


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


方法 sqlalchemy.engine.Dialect 中。get_schema_namesconnection Connection**kw Any List[str]


返回数据库中所有可用的架构名称的列表。


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


方法 sqlalchemy.engine.Dialect 中。get_sequence_namesconnection Connection, schema:strNone=None, **kw Any List[str]


返回数据库中所有可用的序列名称的列表。


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


参数


schema- 要查询的 schema 名称,如果不是默认 schema。


在 1.4 版本加入.


方法 sqlalchemy.engine.Dialect 中。get_table_commentconnection 连接table_name: str, schema:strNone=None, **kw Any ReflectedTableComment


返回 table_name 标识的表的 “comment”。


给定一个字符串table_name和一个可选的字符串架构,返回 table 注释信息作为对应的字典 ReflectedTableComment 字典。


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


加注


NotImplementedError 对于不支持注释的方言。


在 1.2 版本加入.


方法 sqlalchemy.engine.Dialect 中。get_table_namesconnection 连接, schema:strNone=None, **kw Any List[str]


返回 schema 的表名列表。


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


方法 sqlalchemy.engine.Dialect 中。get_table_optionsconnection 连接table_name: str, schema:strNone=None, **kw Any Dict[str Any]


返回 table_name 时指定的选项字典 已创建。


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


方法 sqlalchemy.engine.Dialect 中。get_temp_table_namesconnection Connection, schema:strNone=None, **kw Any List[str]


返回给定连接上的临时表名列表(如果底层后端支持)。


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


方法 sqlalchemy.engine.Dialect 中。get_temp_view_namesconnection Connection, schema:strNone=None, **kw Any List[str]


返回给定连接上的临时视图名称列表(如果底层后端支持)。


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


方法 sqlalchemy.engine.Dialect 中。get_unique_constraintsconnection 连接table_name: str, schema:strNone=None, **kw Any List[ReflectedUniqueConstraint](列表[ReflectedUniqueConstraint])


返回有关 table_name 中唯一约束的信息。


给定一个字符串table_name和一个可选的字符串架构,以对应于 ReflectedUniqueConstraint 字典的字典列表的形式返回唯一约束信息。


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


方法 sqlalchemy.engine.Dialect 中。get_view_definitionconnection 连接view_name: str, schema:strNone=None, **kw Any str


返回普通视图或具体化视图定义。


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


给定一个 Connection,一个字符串 view_name 和可选的字符串架构返回视图定义。


方法 sqlalchemy.engine.Dialect 中。get_view_namesconnection Connection, schema:strNone=None, **kw Any List[str]


返回数据库中所有可用的非具体化视图名称的列表。


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


参数


schema- 要查询的 schema 名称,如果不是默认 schema。


方法 sqlalchemy.engine.Dialect 中。has_indexconnection 连接table_name: strindex_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_schemaconnection 连接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_sequenceconnection 连接sequence_name str, schema:strNone=None, **kw Any bool


检查数据库中是否存在特定序列。


给定一个 Connection 对象和一个字符串 sequence_name,如果数据库中存在给定序列,则返回 True,否则返回 False


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


方法 sqlalchemy.engine.Dialect 中。has_tableconnection 连接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 中。initializeconnection 连接


在战略性创建具有连接的方言期间调用。


允许 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_disconnecte 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_namename 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() - 允许控制 DBAPI connect() 序列本身。


Dialect.on_connect_url() - 取代 Dialect.on_connect() 来接收 URL 对象。


方法 sqlalchemy.engine.Dialect 中。on_connect_urlurl 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_leveldbapi_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_optionsconnection Connectionopts CoreExecuteOptionsParameter


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


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


在 1.4 版本加入.


方法 sqlalchemy.engine.Dialect 中。set_engine_execution_optionsengine Engineopts CoreExecuteOptionsParameter


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


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


方法 sqlalchemy.engine.Dialect 中。set_isolation_leveldbapi_connection DBAPIConnectionlevel 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


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


属性 sqlalchemy.engine.Dialect 的 Dialect 中。supports_sane_rowcount: bool


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


属性 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_descriptortypeobj 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_returninguse_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

attribute sqlalchemy.engine.default.DefaultExecutionContext. compiled:CompiledNone = None


如果传递给 constructor,则执行 sqlalchemy.engine.base.Compiled 对象


attribute sqlalchemy.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 游标


attribute sqlalchemy.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。


attribute sqlalchemy.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_returningcursor)¶


对于 RETURNING 结果,请从 DBAPI 游标传递 cursor.fetchall()。


这是一个特定于方言的钩子,用于具有特殊 调用为 “RETURNING” 语句。 默认实现为 cursor.fetchall()


此钩子目前仅由 insertmanyvalues 使用 特征。 未设置 use_insertmanyvalues=True 的方言 不需要考虑这个钩子。


在 2.0.10 版本加入.


方法 sqlalchemy.engine.default.DefaultExecutionContext. get_current_parametersisolate_multiinsert_groups=True


返回应用于当前行的参数字典。


此方法只能在用户定义的 default 的上下文中使用 generation 函数,例如 上下文相关的默认函数。调用时,将返回一个字典,其中包括作为 INSERT 或 UPDATE 语句一部分的每个列/值对的条目。字典的 keys 将是每个 Column 的 key 值,通常与 name 同义。


参数


isolate_multiinsert_groups=True – 表示使用 Insert.values() 创建的多值 INSERT 结构 应该是 通过仅返回本地参数的子集来处理 添加到当前列 default 调用。 当 False 时,将返回语句的原始参数,包括在多值 INSERT 情况下使用的命名约定。


方法 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_valuesnames


从游标返回 OUT 参数值的序列。


对于支持 OUT 参数的方言,当存在具有 SQLCompiler.has_out_parameters 标志集。如果语句本身具有 BindParameter,则此标志将依次设置为 True 设置了 .isoutparam 标志的对象,这些对象由 SQLCompiler.visit_bindparam() 方法使用。如果 dialect 编译器生成带有 .isoutparamBindParameter 对象 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_processortype_colnamecoltype


返回 cursor.description 中存在的给定类型的 'result processor'。


这有一个默认实现,dialect 可以覆盖该实现以进行上下文相关的结果类型处理。


方法 sqlalchemy.engine.default.DefaultExecutionContext. handle_dbapi_exceptione


收到在执行、结果获取等时发生的 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_idslast_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(执行上下文)¶


对应于单个执行的 Dialect 的 messenger 对象。


attribute sqlalchemy.engine.ExecutionContext. compiled:CompiledNone


如果传递给 constructor,则执行 sqlalchemy.engine.base.Compiled 对象


attribute sqlalchemy.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 游标


attribute sqlalchemy.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。


attribute sqlalchemy.engine.ExecutionContext. executemany bool


如果上下文具有多个参数集的列表,则为 True。


从历史上看,此属性链接到 cursor.execute() 还是 cursor.executemany() 将被使用。 它现在也可以表示 “insertmanyvalues” 表示一个或多个 cursor.execute() 调用。


属性 sqlalchemy.engine.ExecutionContext. execution_options:_ExecuteOptions


与当前语句执行关联的执行选项


方法 sqlalchemy.engine.ExecutionContext. fetchall_for_returningcursor DBAPICursor Sequence[Any]


对于 RETURNING 结果,请从 DBAPI 游标传递 cursor.fetchall()。


这是一个特定于方言的钩子,用于具有特殊 调用为 “RETURNING” 语句。 默认实现为 cursor.fetchall()


此钩子目前仅由 insertmanyvalues 使用 特征。 未设置 use_insertmanyvalues=True 的方言 不需要考虑这个钩子。


在 2.0.10 版本加入.


方法 sqlalchemy.engine.ExecutionContext. fire_sequenceseq Sequence_SchemaItemtype_: Integer int


给定一个 Sequence,调用它并返回下一个 int 值


方法 sqlalchemy.engine.ExecutionContext. get_out_parameter_valuesout_param_names Sequence[str] Sequence[Any]


从游标返回 OUT 参数值的序列。


对于支持 OUT 参数的方言,当存在具有 SQLCompiler.has_out_parameters 标志集。如果语句本身具有 BindParameter,则此标志将依次设置为 True 设置了 .isoutparam 标志的对象,这些对象由 SQLCompiler.visit_bindparam() 方法使用。如果 dialect 编译器生成带有 .isoutparamBindParameter 对象 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


返回 DBAPI cursor.rowcount 值,或者在某些情况下返回解释的值。


有关详细信息,请参阅 CursorResult.rowcount


方法 sqlalchemy.engine.ExecutionContext. handle_dbapi_exceptione 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_idslast_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 的源。


attribute sqlalchemy.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 any SQLCompiler 实例。


类签名


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


位置参数的元组,用于使用位置参数样式编译的语句。


attribute sqlalchemy.sql.compiler.ExpandedState. positiontup:Sequence[str]None


指示位置参数顺序的字符串名称序列


属性 sqlalchemy.sql.compiler.ExpandedState. 处理器Mapping[str _BindProcessorType[Any]


绑定值处理器的映射


attribute sqlalchemy.sql.compiler.ExpandedState. 语句str


参数完全展开的字符串 SQL 语句


sqlalchemy.sql.compiler。GenericType编译器


成员

ensure_kwarg


类签名


sqlalchemy.sql.compiler.GenericTypeCompiler sqlalchemy.sql.compiler.TypeCompiler


属性 sqlalchemy.sql.compiler.GenericTypeCompiler. ensure_kwarg: str = 'visit_\\w+'


继承自TypeCompilerTypeCompiler.ensure_kwarg属性


一个正则表达式,指示方法应接受 **kw 参数的方法名称。


该类将扫描与 name 模板匹配的方法,并在必要时对其进行修饰,以确保接受 **kw 参数。


sqlalchemy.log 类已识别

sqlalchemy.sql.compiler。IdentifierPreparer 编译器¶


根据选项处理标识符的引用和大小写折叠。


方法 sqlalchemy.sql.compiler.IdentifierPreparer. __init__方言initial_quote='“'final_quote=escape_quote='”'quote_case_sensitive_collations=Trueomit_schema=False


构造一个新的 IdentifierPreparer 对象。

initial_quote


以分隔标识符开头的字符。

final_quote


结束分隔标识符的字符。默认为 initial_quote

omit_schema


防止预置架构名称。对于不支持 schemae 的数据库很有用。


方法 sqlalchemy.sql.compiler.IdentifierPreparer. format_columncolumnuse_table=Falsename=Nonetable_name=Noneuse_schema=Falseanon_map=None


准备带引号的列名称。


方法 sqlalchemy.sql.compiler.IdentifierPreparer. format_label_namenameanon_map=None


准备带引号的列名称。


方法 sqlalchemy.sql.compiler.IdentifierPreparer. format_schemaname


准备带引号的架构名称。


方法 sqlalchemy.sql.compiler.IdentifierPreparer. format_tabletableuse_schema=Truename=None


准备带引号的表和 Schema 名称。


方法 sqlalchemy.sql.compiler.IdentifierPreparer. format_table_seqtableuse_schema=True


将 table name 和 schema 格式设置为元组。


method sqlalchemy.sql.compiler.IdentifierPreparer. quoteident str, force:AnyNone=None str


有条件地引用标识符。


如果标识符是保留字,则引用标识符,包含 引用必要的字符,或者是 quoted_name,其中包括设置为 Truequote


子类可以覆盖此属性,以便为标识符名称提供依赖于数据库的引用行为。


参数

方法 sqlalchemy.sql.compiler.IdentifierPreparer. quote_identifiervalue str str


引用标识符。


子类应该覆盖它以提供依赖于数据库的引用行为。


方法 sqlalchemy.sql.compiler.IdentifierPreparer. quote_schemaschema str, force:AnyNone=None str


有条件地引用架构名称。


如果名称是保留字、包含需要引号的字符,或者quoted_name是包含 quote 设置为 True


子类可以覆盖此属性,以便为 schema 名称提供依赖于数据库的引用行为。


参数

属性 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_phraseelementreg


关键字序列过滤器。


用于表示关键字序列的元素的过滤器,例如 “INITIALLY”、“INITIALLY DEFERRED” 等。不应存在特殊字符。


在 1.3 版本加入.


sqlalchemy.sql.compiler。SQLCompiler


Compiled 的默认实现。


ClauseElement 对象编译为 SQL 字符串。


方法 sqlalchemy.sql.compiler.SQLCompiler. __init__dialect 方言, statement:ClauseElementNone, cache_key:CacheKeyNone=None, column_keys:Sequence[str]None=None, for_executemany: bool = Falselinting Linting = Linting.NO_LINTING, _supporting_against:SQLCompilerNone=None, **kwargs Any


构造新的 SQLCompiler 对象。


参数

  • dialect– 要使用的方言


  • 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[strstr]] = {' ': '_', '%': '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_stateparams:_CoreSingleExecuteParamsNone=None, escape_names: bool = True ExpandedState


为给定参数集返回新的 ExpandedState


对于使用 “expanding” 或其他后期呈现的参数的查询,此方法将同时提供最终的 SQL 字符串以及将用于特定参数集的参数。


2.0.0rc1 版本的新Function。


方法 sqlalchemy.sql.compiler.SQLCompiler. construct_paramsparams:_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'。


这是目前的 SelectInsert更新删除、 正在编译的 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_clauseupdate_stmtfrom_tableextra_fromsfrom_hints**kw


提供一个钩子来覆盖 DELETE 的生成。FROM 子句。


这可用于实现 DELETE..例如,USING 的 USING 示例。


MySQL 和 MSSQL 会覆盖此 URL。


方法 sqlalchemy.sql.compiler.SQLCompiler. delete_limit_clausedelete_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_precolumnsselect**kw


在构建 SELECT 语句时调用,position 就在 column list 之前。


方法 sqlalchemy.sql.compiler.SQLCompiler. group_by_clauseselect**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_clauseselect**kw


允许 dialects 自定义 ORDER BY 的呈现方式。


属性 sqlalchemy.sql.compiler.SQLCompiler. 参数


返回嵌入到此编译对象中的 bind param 字典,用于存在的那些值。


另请参阅


如何将 SQL 表达式呈现为字符串,可能内联绑定参数?- 包括用于调试用例的使用示例。


attribute sqlalchemy.sql.compiler.SQLCompiler. positiontup:List[str]None =


对于使用 positional paramstyle 的已编译结构,将是一个字符串序列,按顺序指示绑定参数的名称。


这用于按正确的顺序渲染绑定参数,并与 Compiled.params 字典结合使用以渲染参数。


此序列始终包含参数的未转义名称。


另请参阅


如何将 SQL 表达式呈现为字符串,可能内联绑定参数?- 包括用于调试用例的使用示例。


属性 sqlalchemy.sql.compiler.SQLCompiler. post_compile_params: FrozenSet[BindParameter[Any]] = frozenset({})


bindParameter 对象,这些对象在语句执行时呈现为绑定参数占位符。


attribute sqlalchemy.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_valuevaluetype_


将 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

attribute sqlalchemy.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_clauseupdate_stmtfrom_tableextra_fromsfrom_hints**kw


提供一个钩子来覆盖 UPDATE 的生成..FROM 子句。


MySQL 和 MSSQL 会覆盖此 URL。


方法 sqlalchemy.sql.compiler.SQLCompiler. update_limit_clauseupdate_stmt


为 MySQL 提供一个钩子,以将 LIMIT 添加到 UPDATE


属性 sqlalchemy.sql.compiler.SQLCompiler. update_prefetch: Sequence[Column[Any]] = ()


在 UPDATE 发生之前应评估 onupdate 默认值的列列表


方法 sqlalchemy.sql.compiler.SQLCompiler. update_tables_clauseupdate_stmtfrom_tableextra_froms**kw


提供一个钩子以覆盖 UPDATE 语句中的初始 table 子句。


MySQL 会覆盖此 URL。


方法 sqlalchemy.sql.compiler.SQLCompiler. visit_override_bindsoverride_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_clauseupdate_stmtfrom_tableextra_fromsfrom_hints**kw


提供一个钩子来覆盖 DELETE 的生成。FROM 子句。


这可用于实现 DELETE..例如,USING 的 USING 示例。


MySQL 和 MSSQL 会覆盖此 URL。


方法 sqlalchemy.sql.compiler.StrSQLCompiler. update_from_clauseupdate_stmtfrom_tableextra_fromsfrom_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_asyncfn 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 版本加入.