核心内构件¶

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

class sqlalchemy.engine.interfaces.Compiled(dialect, statement, bind=None, schema_translate_map=None, compile_kwargs={})

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

这个 __str__ 方法 Compiled 对象应生成语句的实际文本。 Compiled 对象特定于其基础数据库方言,也可能特定于或可能不特定于特定绑定参数集中引用的列。在任何情况下都不应该 Compiled 对象依赖于这些绑定参数的实际值,即使它可以将这些值作为默认值引用。

__init__(dialect, statement, bind=None, schema_translate_map=None, compile_kwargs={})

构建新的 Compiled 对象。

参数
  • dialect -- Dialect 编译。

  • statement -- ClauseElement 编译。

  • bind -- 用于编译此语句的可选引擎或连接。

  • schema_translate_map -- 在形成结果SQL时要翻译的架构名称字典。版本已添加::1.1..参阅: 模式名称的翻译

  • compile_kwargs -- 将传递给初始调用的其他Kwarg Compiled.process() .

compile()

生成此元素的内部字符串表示形式。

0.7 版后已移除: 这个 Compiled.compile() 方法已弃用,将在将来的版本中删除。这个 Compiled 对象现在在构造函数中运行其编译,而此方法什么也不做。

construct_params(params=None)

返回此已编译对象的绑定参数。

参数

params -- 字符串/对象对的dict,其值将覆盖在语句中编译的绑定值。

execute(*multiparams, **params)

执行此编译对象。

execution_options = {}

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

params

返回此已编译对象的绑定参数。

scalar(*multiparams, **params)

执行此编译对象并返回结果的标量值。

sql_compiler

返回能够处理SQL表达式的已编译。

如果这个编译器是一个,它可能只返回“self”。

class sqlalchemy.sql.compiler.DDLCompiler(dialect, statement, bind=None, schema_translate_map=None, compile_kwargs={})

基地: sqlalchemy.sql.compiler.Compiled

__eq__

继承 __eq__ 属性 object

返回self==值。

__init__(dialect, statement, bind=None, schema_translate_map=None, compile_kwargs={})

继承 __init__() 方法 Compiled

构建新的 Compiled 对象。

参数
  • dialect -- Dialect 编译。

  • statement -- ClauseElement 编译。

  • bind -- 用于编译此语句的可选引擎或连接。

  • schema_translate_map -- 在形成结果SQL时要翻译的架构名称字典。版本已添加::1.1..参阅: 模式名称的翻译

  • compile_kwargs -- 将传递给初始调用的其他Kwarg Compiled.process() .

__le__

继承 __le__ 属性 object

返回self<=value。

__lt__

继承 __lt__ 属性 object

返回self<value。

__ne__

继承 __ne__ 属性 object

回归自我!=值。

compile()

继承 compile() 方法 Compiled

生成此元素的内部字符串表示形式。

0.7 版后已移除: 这个 Compiled.compile() 方法已弃用,将在将来的版本中删除。这个 Compiled 对象现在在构造函数中运行其编译,而此方法什么也不做。

construct_params(params=None)

返回此已编译对象的绑定参数。

参数

params -- 字符串/对象对的dict,其值将覆盖在语句中编译的绑定值。

define_constraint_remote_table(constraint, table, preparer)

设置CREATE CONSTRAINT子句的远程表子句的格式。

execute(*multiparams, **params)

继承 execute() 方法 Compiled

执行此编译对象。

params

继承 params 属性 Compiled

返回此已编译对象的绑定参数。

scalar(*multiparams, **params)

继承 scalar() 方法 Compiled

执行此编译对象并返回结果的标量值。

class sqlalchemy.engine.default.DefaultDialect(convert_unicode=False, encoding='utf-8', paramstyle=None, dbapi=None, implicit_returning=None, supports_right_nested_joins=None, case_sensitive=True, supports_native_boolean=None, empty_in_strategy='static', label_length=None, **kwargs)

基地: sqlalchemy.engine.interfaces.Dialect

方言默认实现

__eq__

继承 __eq__ 属性 object

返回self==值。

__le__

继承 __le__ 属性 object

返回self<=value。

__lt__

继承 __lt__ 属性 object

返回self<value。

__ne__

继承 __ne__ 属性 object

回归自我!=值。

connect(*cargs, **cparams)

返回设置新创建的DBAPI连接的可调用文件。

可调用接受单个参数“conn”,即dbapi连接本身。它没有返回值。

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

如果返回了一个可调用文件,那么它将被组装到接收直接DBAPI连接的池侦听器中,并删除所有包装。

如果没有返回,则不会生成侦听器。

construct_arguments = None

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

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

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

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

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

0.9.2 新版功能.

参见

DialectKWArgs - implementing base class which consumes DefaultDialect.construct_arguments

create_connect_args(url)

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

给出了一个 URL 对象,返回由 *args /`**kwargs`适合直接发送到dbapi的connect函数。

create_xid()

创建随机的两阶段事务ID。

此ID将传递给do_begin_Twophase()、do_rollback_Twophase()、do_commit_Twophase()。其格式未指定。

dbapi_exception_translation_map = {}

在DBAPI发布的异常实际上没有 __name__ 他们是有联系的。

1.0.5 新版功能.

ddl_compiler

sqlalchemy.sql.compiler.DDLCompiler 的别名

denormalize_name(name)

继承 denormalize_name() 方法 Dialect

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

此方法仅在方言定义需要u name_normalize=true时使用。

do_begin(dbapi_connection)

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

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

注意 Dialect.do_begin() 除非 Transaction 对象正在使用中。这个 Dialect.do_autocommit() 钩子是为dbapis提供的,当sqlAlchemy Connection 在默认的“自动提交”模式下使用。

参数

dbapi_connection -- DBAPI连接,通常在 ConnectionFairy .

do_begin_twophase(connection, xid)

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

参数
do_close(dbapi_connection)

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

这个钩子叫 Pool 当连接已从池中断开,或返回的连接超出池的正常容量时。

do_commit(dbapi_connection)

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

参数

dbapi_connection -- DBAPI连接,通常在 ConnectionFairy .

do_commit_twophase(connection, xid, is_prepared=True, recover=False)

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

参数
do_execute(cursor, statement, parameters, context=None)

提供 cursor.execute(statement, parameters) .

do_execute_no_params(cursor, statement, context=None)

提供 cursor.execute(statement) .

不应发送参数集合。

do_executemany(cursor, statement, parameters, context=None)

提供 cursor.executemany(statement, parameters) .

do_prepare_twophase(connection, xid)

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

参数
do_recover_twophase(connection)

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

参数

connection -- 一 Connection .

do_release_savepoint(connection, name)

释放连接上的命名保存点。

参数
do_rollback(dbapi_connection)

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

参数

dbapi_connection -- DBAPI连接,通常在 ConnectionFairy .

do_rollback_to_savepoint(connection, name)

回滚到命名保存点的连接。

参数
do_rollback_twophase(connection, xid, is_prepared=True, recover=False)

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

参数
do_savepoint(connection, name)

创建具有给定名称的保存点。

参数
classmethod engine_created(engine)

继承 engine_created() 方法 Dialect

在返回决赛前调用了一个方便挂钩 Engine .

如果方言返回的类与 get_dialect_cls() 方法,然后在两个类上调用钩子,首先在由 get_dialect_cls() 方法,然后在调用方法的类上。

方言和/或包装机应使用钩子将特殊事件应用于引擎或其组件。特别是,它允许方言包装类应用方言级别的事件。

1.0.3 新版功能.

execute_sequence_format

builtins.tuple 的别名

execution_ctx_cls

DefaultExecutionContext 的别名

get_check_constraints(connection, table_name, schema=None, **kw)

返回有关签入约束的信息 table_name .

给定字符串 table_name 和可选字符串 schema ,将检查约束信息作为具有以下键的dict列表返回:

名称

检查约束的名称

SqtExt

检查约束的SQL表达式

* *千瓦

传递给方言的get_check_constraints()方法的其他选项。

1.1.0 新版功能.

get_columns(connection, table_name, schema=None, **kw)

继承 get_columns() 方法 Dialect

返回有关中列的信息 table_name .

给出了一个 Connection 一个字符串 table_name 和可选字符串 schema ,以字典列表的形式返回列信息,其中包含以下键:

名称

列的名称

类型

[sqlalchemy.types#TypeEngine]

可空的

布尔

违约

列的默认值

自动增量

布尔

序列
形式词典
{姓名str,“start”:int,“increment”:int,“minvalue”:int,

“maxValue”:int,“nominValue”:bool,“nomaxValue”:bool,“cycle”:bool,“cache”:int,“order”:bool_

可能存在其他列属性。

classmethod get_dialect_cls(url)

继承 get_dialect_cls() 方法 Dialect

给定一个URL,返回 Dialect 会用到的。

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

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

1.0.3 新版功能.

get_foreign_keys(connection, table_name, schema=None, **kw)

继承 get_foreign_keys() 方法 Dialect

返回有关中的外键的信息 table_name .

给出了一个 Connection 一个字符串 table_name 和可选字符串 schema ,将外键信息作为带有这些键的dict列表返回:

名称

约束的名称

constrained_columns

构成外键的列名列表

referred_schema

引用的架构的名称

referred_table

引用表的名称

referred_columns

引用表中与受约束的列对应的列名称列表

get_indexes(connection, table_name, schema=None, **kw)

继承 get_indexes() 方法 Dialect

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

给出了一个 Connection 一个字符串 table_name 和可选字符串 schema ,将索引信息作为具有以下键的字典列表返回:

名称

索引的名称

column_names

按顺序排列的列名列表

独特的

布尔

get_isolation_level(dbapi_conn)

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

使用时 Connection 对象,可以使用 Connection.connection 访问器。

请注意,这是一个方言级别的方法,用作 ConnectionEngine 隔离级设施;对于大多数典型的用例,这些API应该是首选的。

get_pk_constraint(conn, table_name, schema=None, **kw)

兼容性方法,为那些不实现get_pk_约束()的方言调整get_primary_keys()的结果。

get_primary_keys(connection, table_name, schema=None, **kw)

继承 get_primary_keys() 方法 Dialect

返回有关中主键的信息 table_name .

0.8 版后已移除: 这个 Dialect.get_primary_keys() 方法已弃用,将在将来的版本中删除。请参阅 Dialect.get_pk_constraint() 方法。

get_table_comment(connection, table_name, schema=None, **kw)

返回由标识的表的“注释” table_name .

给定字符串 table_name 和可选字符串 schema ,将表注释信息作为具有此键的字典返回:

文本

注释的文本

加薪 NotImplementedError 不支持评论的方言。

1.2 新版功能.

get_table_names(connection, schema=None, **kw)

继承 get_table_names() 方法 Dialect

返回表名列表 schema .

get_temp_table_names(connection, schema=None, **kw)

如果基础后端支持,则返回给定连接上的临时表名列表。

get_temp_view_names(connection, schema=None, **kw)

如果基础后端支持,则返回给定连接上的临时视图名称列表。

get_unique_constraints(connection, table_name, schema=None, **kw)

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

给定字符串 table_name 和可选字符串 schema ,返回唯一约束信息作为具有以下键的dict列表:

名称

唯一约束的名称

column_names

按顺序排列的列名列表

* *千瓦

其他选项传递给方言的get_unique_constraints()方法。

0.9.0 新版功能.

get_view_definition(connection, view_name, schema=None, **kw)

返回视图定义。

给出了一个 Connection 一个字符串 view_name 和可选字符串 schema ,返回视图定义。

get_view_names(connection, schema=None, **kw)

继承 get_view_names() 方法 Dialect

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

图式:

可选,从非默认架构中检索名称。

has_sequence(connection, sequence_name, schema=None)

继承 has_sequence() 方法 Dialect

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

给出了一个 Connection 对象和字符串 sequence_name ,如果给定序列存在于数据库中,则返回true,否则返回false。

has_table(connection, table_name, schema=None)

继承 has_table() 方法 Dialect

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

给出了一个 Connection 对象和字符串 table_name ,如果给定的表(可能在指定的 schema )存在于数据库中,否则为false。

initialize(connection)

在有连接的方言的战略性创建过程中调用。

允许方言根据服务器版本信息或其他属性配置选项。

这里传递的连接是一个具有完整功能的sqlAlchemy连接对象。

应该通过super()调用基方言的initialize()方法。

is_disconnect(e, connection, cursor)

如果给定的db-api错误指示无效连接,则返回true

normalize_name(name)

继承 normalize_name() 方法 Dialect

如果检测到给定名称不区分大小写,则将其转换为小写。

此方法仅在方言定义需要u name_normalize=true时使用。

on_connect()

返回设置新创建的DBAPI连接的可调用文件。

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

如果返回了一个可调用文件,那么它将被组装到接收直接DBAPI连接的池侦听器中,并删除所有包装。

如果没有返回,则不会生成侦听器。

preparer

sqlalchemy.sql.compiler.IdentifierPreparer 的别名

reflecttable(connection, table, include_columns, exclude_columns, resolve_fks, **opts)

从数据库加载表说明。

给出了一个 Connection 和A Table 对象,从数据库中反映其列和属性。

此方法的实现由 DefaultDialect.reflecttable() ,利用 Inspector 以检索列信息。

方言应 not 寻求实现此方法,并应改为实现单独的模式检查操作,例如 Dialect.get_columns()Dialect.get_pk_constraint() 等。

reset_isolation_level(dbapi_conn)

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

请注意,这是一个方言级别的方法,用作 ConnectionEngine 隔离级设施;对于大多数典型的用例,这些API应该是首选的。

set_isolation_level(dbapi_conn, level)

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

请注意,这是一个方言级别的方法,用作 ConnectionEngine 隔离级设施;对于大多数典型的用例,这些API应该是首选的。

statement_compiler

sqlalchemy.sql.compiler.SQLCompiler 的别名

type_compiler

sqlalchemy.sql.compiler.GenericTypeCompiler 的别名

type_descriptor(typeobj)

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

此方法查找名为 colspecs 作为类或实例级变量,并传递到 types.adapt_type() .

class sqlalchemy.engine.interfaces.Dialect

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

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

所有方言都实现以下属性:

名称

从DBAPI中立的角度识别方言的名称(即“sqlite”)。

驱动

标识方言DBAPI的名称

位置的

如果此方言的paramStyle是位置的,则为true。

帕拉姆式

要使用的参数样式(某些DB API支持多个参数样式)。

convert_unicode

如果应将Unicode转换应用于所有 str 类型。

编码

用于Unicode的编码类型,通常默认为“utf-8”。

statement_compiler

Compiled 用于编译SQL语句的类

ddl_compiler

Compiled 用于编译DDL语句的类

server_version_info

包含正在使用的数据库后端版本号的元组。此值仅可用于支持方言,通常在与数据库的初始连接期间填充。

default_schema_name

默认架构的名称。此值仅可用于支持方言,通常在与数据库的初始连接期间填充。

execution_ctx_cls

ExecutionContext 用于处理语句执行的类

execute_sequence_format

“tuple”或“list”类型,具体取决于cursor.execute()接受第二个参数的类型(它们各不相同)。

制备器

IdentifierPreparer 用于引用标识符的类。

supports_alter

True 如果数据库支持 ALTER TABLE .

max_identifier_length

标识符名称的最大长度。

supports_unicode_statements

指示db-api是否可以作为python unicode字符串接收SQL语句

supports_unicode_binds

指示db-api是否可以作为python unicode字符串接收字符串绑定参数

supports_sane_rowcount

指示方言是否正确实现的行数 UPDATEDELETE 声明。

supports_sane_multi_rowcount

指示方言是否正确实现的行数 UPDATEDELETE 通过ExecuteMany执行时的语句。

preexecute_autoincrement_sequences

如果“implicit”主键函数必须单独执行才能获取其值,则为true。这是目前面向PostgreSQL的。

implicit_returning

在插入执行期间使用返回或等效项,以便在一次执行中加载新生成的主键和其他列默认值,然后通过插入的主键可用。如果INSERT语句显式指定了RETURN(),则不使用“隐式”功能,插入的_primary_键将不可用。

大肠杆菌

从SQLAlchemy.types映射到特定于方言类的子类的typeengine类的字典。此字典仅为类级别,不能从方言实例本身访问。

supports_default_values

指示构造 INSERT INTO tablename DEFAULT VALUES 支持

supports_sequences

指示方言是否支持创建序列或类似。

sequences_optional

如果为true,则指示sequence()构造上的“可选”标志是否应发出不生成创建序列的信号。仅适用于支持序列的方言。目前只允许在指定sequence()用于其他后端的列上使用postgresql-serial。

supports_native_enum

指示方言是否支持本机枚举构造。这将阻止types.enum在使用该类型时生成check约束。

supports_native_boolean

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

dbapi_exception_translation_map

一种名称字典,其中将包含键入备用类名的PEP-249异常的名称(integrityerror、operationalerror等)作为值,以支持DBAPI具有未按其所指命名的异常类(例如integrityerror=myException)的情况。在绝大多数情况下,这本词典是空的。

1.0.5 新版功能.

connect()

返回设置新创建的DBAPI连接的可调用文件。

可调用接受单个参数“conn”,即dbapi连接本身。它没有返回值。

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

如果返回了一个可调用文件,那么它将被组装到接收直接DBAPI连接的池侦听器中,并删除所有包装。

如果没有返回,则不会生成侦听器。

create_connect_args(url)

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

给出了一个 URL 对象,返回由 *args /`**kwargs`适合直接发送到dbapi的connect函数。

create_xid()

创建两阶段事务ID。

此ID将传递给do_begin_Twophase()、do_rollback_Twophase()、do_commit_Twophase()。其格式未指定。

denormalize_name(name)

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

此方法仅在方言定义需要u name_normalize=true时使用。

do_begin(dbapi_connection)

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

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

注意 Dialect.do_begin() 除非 Transaction 对象正在使用中。这个 Dialect.do_autocommit() 钩子是为dbapis提供的,当sqlAlchemy Connection 在默认的“自动提交”模式下使用。

参数

dbapi_connection -- DBAPI连接,通常在 ConnectionFairy .

do_begin_twophase(connection, xid)

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

参数
do_close(dbapi_connection)

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

这个钩子叫 Pool 当连接已从池中断开,或返回的连接超出池的正常容量时。

do_commit(dbapi_connection)

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

参数

dbapi_connection -- DBAPI连接,通常在 ConnectionFairy .

do_commit_twophase(connection, xid, is_prepared=True, recover=False)

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

参数
do_execute(cursor, statement, parameters, context=None)

提供 cursor.execute(statement, parameters) .

do_execute_no_params(cursor, statement, parameters, context=None)

提供 cursor.execute(statement) .

不应发送参数集合。

do_executemany(cursor, statement, parameters, context=None)

提供 cursor.executemany(statement, parameters) .

do_prepare_twophase(connection, xid)

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

参数
do_recover_twophase(connection)

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

参数

connection -- 一 Connection .

do_release_savepoint(connection, name)

释放连接上的命名保存点。

参数
do_rollback(dbapi_connection)

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

参数

dbapi_connection -- DBAPI连接,通常在 ConnectionFairy .

do_rollback_to_savepoint(connection, name)

回滚到命名保存点的连接。

参数
do_rollback_twophase(connection, xid, is_prepared=True, recover=False)

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

参数
do_savepoint(connection, name)

创建具有给定名称的保存点。

参数
classmethod engine_created(engine)

在返回决赛前调用了一个方便挂钩 Engine .

如果方言返回的类与 get_dialect_cls() 方法,然后在两个类上调用钩子,首先在由 get_dialect_cls() 方法,然后在调用方法的类上。

方言和/或包装机应使用钩子将特殊事件应用于引擎或其组件。特别是,它允许方言包装类应用方言级别的事件。

1.0.3 新版功能.

get_check_constraints(connection, table_name, schema=None, **kw)

返回有关签入约束的信息 table_name .

给定字符串 table_name 和可选字符串 schema ,将检查约束信息作为具有以下键的dict列表返回:

名称

检查约束的名称

SqtExt

检查约束的SQL表达式

* *千瓦

传递给方言的get_check_constraints()方法的其他选项。

1.1.0 新版功能.

get_columns(connection, table_name, schema=None, **kw)

返回有关中列的信息 table_name .

给出了一个 Connection 一个字符串 table_name 和可选字符串 schema ,以字典列表的形式返回列信息,其中包含以下键:

名称

列的名称

类型

[sqlalchemy.types#TypeEngine]

可空的

布尔

违约

列的默认值

自动增量

布尔

序列
形式词典
{姓名str,“start”:int,“increment”:int,“minvalue”:int,

“maxValue”:int,“nominValue”:bool,“nomaxValue”:bool,“cycle”:bool,“cache”:int,“order”:bool_

可能存在其他列属性。

classmethod get_dialect_cls(url)

给定一个URL,返回 Dialect 会用到的。

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

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

1.0.3 新版功能.

get_foreign_keys(connection, table_name, schema=None, **kw)

返回有关中的外键的信息 table_name .

给出了一个 Connection 一个字符串 table_name 和可选字符串 schema ,将外键信息作为带有这些键的dict列表返回:

名称

约束的名称

constrained_columns

构成外键的列名列表

referred_schema

引用的架构的名称

referred_table

引用表的名称

referred_columns

引用表中与受约束的列对应的列名称列表

get_indexes(connection, table_name, schema=None, **kw)

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

给出了一个 Connection 一个字符串 table_name 和可选字符串 schema ,将索引信息作为具有以下键的字典列表返回:

名称

索引的名称

column_names

按顺序排列的列名列表

独特的

布尔

get_isolation_level(dbapi_conn)

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

使用时 Connection 对象,可以使用 Connection.connection 访问器。

请注意,这是一个方言级别的方法,用作 ConnectionEngine 隔离级设施;对于大多数典型的用例,这些API应该是首选的。

get_pk_constraint(connection, table_name, schema=None, **kw)

返回有关表“名称”的主键约束的信息。

给出了一个 Connection 一个字符串 table_name 和可选字符串 schema ,将主键信息作为具有以下键的字典返回:

constrained_columns

构成主键的列名列表

名称

主键约束的可选名称。

get_primary_keys(connection, table_name, schema=None, **kw)

返回有关中主键的信息 table_name .

0.8 版后已移除: 这个 Dialect.get_primary_keys() 方法已弃用,将在将来的版本中删除。请参阅 Dialect.get_pk_constraint() 方法。

get_table_comment(connection, table_name, schema=None, **kw)

返回由标识的表的“注释” table_name .

给定字符串 table_name 和可选字符串 schema ,将表注释信息作为具有此键的字典返回:

文本

注释的文本

加薪 NotImplementedError 不支持评论的方言。

1.2 新版功能.

get_table_names(connection, schema=None, **kw)

返回表名列表 schema .

get_temp_table_names(connection, schema=None, **kw)

如果基础后端支持,则返回给定连接上的临时表名列表。

get_temp_view_names(connection, schema=None, **kw)

如果基础后端支持,则返回给定连接上的临时视图名称列表。

get_unique_constraints(connection, table_name, schema=None, **kw)

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

给定字符串 table_name 和可选字符串 schema ,返回唯一约束信息作为具有以下键的dict列表:

名称

唯一约束的名称

column_names

按顺序排列的列名列表

* *千瓦

其他选项传递给方言的get_unique_constraints()方法。

0.9.0 新版功能.

get_view_definition(connection, view_name, schema=None, **kw)

返回视图定义。

给出了一个 Connection 一个字符串 view_name 和可选字符串 schema ,返回视图定义。

get_view_names(connection, schema=None, **kw)

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

图式:

可选,从非默认架构中检索名称。

has_sequence(connection, sequence_name, schema=None)

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

给出了一个 Connection 对象和字符串 sequence_name ,如果给定序列存在于数据库中,则返回true,否则返回false。

has_table(connection, table_name, schema=None)

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

给出了一个 Connection 对象和字符串 table_name ,如果给定的表(可能在指定的 schema )存在于数据库中,否则为false。

initialize(connection)

在有连接的方言的战略性创建过程中调用。

允许方言根据服务器版本信息或其他属性配置选项。

这里传递的连接是一个具有完整功能的sqlAlchemy连接对象。

应该通过super()调用基方言的initialize()方法。

is_disconnect(e, connection, cursor)

如果给定的db-api错误指示无效连接,则返回true

normalize_name(name)

如果检测到给定名称不区分大小写,则将其转换为小写。

此方法仅在方言定义需要u name_normalize=true时使用。

reflecttable(connection, table, include_columns, exclude_columns, resolve_fks)

从数据库加载表说明。

给出了一个 Connection 和A Table 对象,从数据库中反映其列和属性。

此方法的实现由 DefaultDialect.reflecttable() ,利用 Inspector 以检索列信息。

方言应 not 寻求实现此方法,并应改为实现单独的模式检查操作,例如 Dialect.get_columns()Dialect.get_pk_constraint() 等。

reset_isolation_level(dbapi_conn)

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

请注意,这是一个方言级别的方法,用作 ConnectionEngine 隔离级设施;对于大多数典型的用例,这些API应该是首选的。

set_isolation_level(dbapi_conn, level)

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

请注意,这是一个方言级别的方法,用作 ConnectionEngine 隔离级设施;对于大多数典型的用例,这些API应该是首选的。

classmethod type_descriptor(typeobj)

将泛型类型转换为方言特定类型。

方言类通常使用 types.adapt_type() 在“类型”模块中执行此操作。

已缓存返回的结果 每方言类 因此不能包含方言实例状态。

class sqlalchemy.engine.default.DefaultExecutionContext

基地: sqlalchemy.engine.interfaces.ExecutionContext

create_cursor()

返回从此ExecutionContext的连接生成的新光标。

有些方言可能希望更改connection.cursor()的行为,例如postgresql,它可能返回pg“server-side”光标。

current_parameters = None

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

此属性仅在用户定义的默认生成函数的上下文中可用,例如,如中所述 上下文相关的默认函数 . 它由一个字典组成,其中包括作为insert或update语句一部分的每个列/值对的条目。字典的键将是每个 Column ,通常与名称同义。

请注意 DefaultExecutionContext.current_parameters 属性不适用于 Insert.values() 方法。这个 DefaultExecutionContext.get_current_parameters() 应首选方法。

get_current_parameters(isolate_multiinsert_groups=True)

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

此方法只能在用户定义的默认生成函数的上下文中使用,例如,如中所述 上下文相关的默认函数 . 调用时,将返回一个字典,其中包含作为insert或update语句一部分的每个列/值对的条目。字典的键将是每个 Column ,通常与名称同义。

参数

isolate_multiinsert_groups=True -- 指示使用创建的多值插入构造 Insert.values() 应该通过只返回当前列默认调用本地的参数子集来处理。什么时候? False ,返回语句的原始参数,包括多值插入时使用的命名约定。

1.2 新版功能: 补充 DefaultExecutionContext.get_current_parameters() 它提供了比现有功能更多的功能 DefaultExecutionContext.current_parameters 属性。

get_lastrowid()

插入后返回self.cursor.lastrowid或等效项。

这可能涉及调用特殊的光标函数、在光标上发出一个新的select(或一个新的),或返回在post_exec()中计算的存储值。

只对支持“隐式”主键生成、将preexecute_autoincrement_sequences设置为false以及没有显式ID值绑定到语句的方言调用此函数。

该函数在post_exec()之后、提交事务或生成resultProxy之前调用一次。如果post-exec()方法将值赋给 self._lastrowid ,该值用于代替调用get_lastrowid()。

注意这个方法是 not 相当于 lastrowid 方法对 ResultProxy ,它是DBAPI的直接代理 lastrowid 在所有情况下都是访问器。

get_result_processor(type_, colname, coltype)

返回cursor.description中存在的给定类型的“结果处理器”。

这有一个默认实现,方言可以为上下文敏感的结果类型处理重写该实现。

handle_dbapi_exception(e)

接收执行、结果获取等时发生的DBAPI异常。

lastrow_has_defaults()

如果最后一个插入或更新行包含内联或数据库端默认值,则返回true。

post_exec()

在已编译语句执行后调用。

如果已编译语句传递到此ExecutionContext,则 last_insert_idslast_inserted_params 等。此方法完成后,数据成员应可用。

pre_exec()

在执行已编译语句之前调用。

如果已编译语句传递到此ExecutionContext,则 statementparameters 此语句完成后,必须初始化DataMembers。

set_input_sizes(translate=None, include_types=None, exclude_types=None)

给定一个光标和子句参数,调用 setinputsizes() 在光标上,使用bind参数的db-api类型 TypeEngine 对象。

这个方法只由那些需要它的方言调用,目前是cx-oracle。

should_autocommit_text(statement)

分析给定的文本语句,如果引用“可提交”语句,则返回true

class sqlalchemy.engine.interfaces.ExecutionContext

对应于单个执行的方言的信使对象。

ExecutionContext应具有以下数据成员:

连接

连接对象,默认值生成器可以自由使用该对象来执行SQL。此连接应引用根连接的相同基础连接/事务性资源。

root_connection

连接对象,它是此ExecutionContext的源。此连接可能具有close_,其结果设置为true,在这种情况下,它只能使用一次。

方言

创建此ExecutionContext的方言。

光标

从连接处获取的DB-API光标,

编译的

如果传递给构造函数,则执行sqlAlchemy.engine.base.compiled对象,

陈述

要执行的语句的字符串版本。传递给构造函数,或者必须在pre_exec()完成时从sql.compiled对象创建。

参数

绑定传递给execute()方法的参数。对于编译语句,这是一个字典或字典列表。对于文本语句,其格式应适合方言的参数样式(即非位置的dict或dict列表,位置的列表或列表/元组列表)。

IS插入

如果语句是insert,则为true。

ISUPDATE

如果语句是更新的,则为true。

should_autocommit

如果该语句是“可提交”语句,则为true。

prefetch_cols

为其触发客户端默认值的列对象列表。适用于插入和更新。

postfetch_cols

为其触发服务器端默认值或内联SQL表达式值的列对象列表。适用于插入和更新。

create_cursor()

返回从此ExecutionContext的连接生成的新光标。

有些方言可能希望更改connection.cursor()的行为,例如postgresql,它可能返回pg“server-side”光标。

exception = None

此ExecutionContext尝试执行语句时捕获的DBAPI级别异常。

此属性仅在 ConnectionEvents.dbapi_error() 事件。

0.9.7 新版功能.

get_rowcount()

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

ResultProxy.rowcount 有关详细信息。

handle_dbapi_exception(e)

接收执行、结果获取等时发生的DBAPI异常。

is_disconnect = None

当此ExecutionContext尝试执行语句时捕获DBAPI级别异常时,布尔标志设置为true或false。

此属性仅在 ConnectionEvents.dbapi_error() 事件。

0.9.7 新版功能.

lastrow_has_defaults()

如果最后一个插入或更新行包含内联或数据库端默认值,则返回true。

post_exec()

在已编译语句执行后调用。

如果已编译语句传递到此ExecutionContext,则 last_insert_idslast_inserted_params 等。此方法完成后,数据成员应可用。

pre_exec()

在执行已编译语句之前调用。

如果已编译语句传递到此ExecutionContext,则 statementparameters 此语句完成后,必须初始化DataMembers。

result()

返回与此ExecutionContext对应的结果对象。

返回ResultProxy。

should_autocommit_text(statement)

分析给定的文本语句,如果引用“可提交”语句,则返回true

class sqlalchemy.log.Identified
class sqlalchemy.sql.compiler.IdentifierPreparer(dialect, initial_quote='"', final_quote=None, escape_quote='"', quote_case_sensitive_collations=True, omit_schema=False)

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

__init__(dialect, initial_quote='"', final_quote=None, escape_quote='"', quote_case_sensitive_collations=True, omit_schema=False)

构建新的 IdentifierPreparer 对象。

initial_quote

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

final_quote

以分隔标识符结尾的字符。默认为 initial_quote .

omit_schema

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

format_column(column, use_table=False, name=None, table_name=None, use_schema=False)

准备带引号的列名。

format_schema(name)

准备引用的架构名称。

format_table(table, use_schema=True, name=None)

准备带引号的表和架构名称。

format_table_seq(table, use_schema=True)

将表名和架构格式化为元组。

quote(ident, force=None)

有条件地引用标识符。

如果标识符是保留字、包含必要的引号字符或是 quoted_name 其中包括 quote 设置为 True .

子类可以重写此项,为标识符名称提供与数据库相关的引用行为。

参数
quote_identifier(value)

引用标识符。

子类应重写此项以提供与数据库相关的引用行为。

quote_schema(schema, force=None)

有条件地引用架构名称。

如果名称是保留字、包含必要的引号字符或是 quoted_name 其中包括 quote 设置为 True .

子类可以重写此内容,为模式名提供与数据库相关的引用行为。

参数
unformat_identifiers(identifiers)

将类似“schema.table.column”的字符串解包到组件中。

validate_sql_phrase(element, reg)

关键字序列筛选器。

用于表示关键字序列的元素的筛选器,如“初始”、“初始延迟”等。不应出现特殊字符。

1.3 新版功能.

class sqlalchemy.sql.compiler.SQLCompiler(dialect, statement, column_keys=None, inline=False, **kwargs)

基地: sqlalchemy.sql.compiler.Compiled

默认实现 Compiled .

编译 ClauseElement 对象转换为SQL字符串。

__init__(dialect, statement, column_keys=None, inline=False, **kwargs)

构建新的 SQLCompiler 对象。

参数
  • dialect -- Dialect 被使用

  • statement -- ClauseElement 编译

  • column_keys -- 要编译成INSERT或UPDATE语句的列名列表。

  • inline -- 是否将insert语句生成为“inline”,例如不格式化以返回任何生成的默认值

  • kwargs -- 超类要使用的其他关键字参数。

ansi_bind_rules = False

SQL 92不允许在select的columns子句中使用bind参数,也不允许类似这样的不明确表达式?=?”。如果目标驱动程序/db强制执行此项,则编译器子类可以将此标志设置为false。

construct_params(params=None, _group_number=None, _check=True)

返回绑定参数键和值的字典

contains_expanding_parameters = False

如果遇到bindparam(…,expanding=true),则为true。

这些需要在执行字符串语句之前转换。

default_from()

当select语句没有froms且不追加froms子句时调用。

让甲骨文有机会 FROM DUAL 到字符串输出。

delete_extra_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)

提供一个钩子来重写delete..from子句的生成。

这可用于实现删除。例如,使用。

mysql和mssql会覆盖这个。

get_select_precolumns(select, **kw)

在构建时调用 SELECT 语句,位置在列列表之前。

group_by_clause(select, **kw)

允许方言自定义分组方式。

isdelete = False

类级别默认值,可以在实例级别设置,以定义此编译实例是否表示插入/更新/删除

order_by_clause(select, **kw)

允许方言自定义排序方式。

params

对于存在的值,返回嵌入到此编译对象中的绑定参数字典。

render_literal_value(value, type_)

将绑定参数的值呈现为带引号的文本。

这用于不接受目标驱动程序/数据库上绑定参数的语句部分。

这应该通过使用DBAPI的引用服务的子类实现。

render_table_with_column_in_update_from = False

设置为true classwide以指示多表更新语句中的set子句应使用表名限定列(即仅限mysql)

returning = None

如果语句是CRUD,则保留列的“返回”集合,并隐式或显式定义返回列

returning_precedes_values = False

设置为true classwide以在values或where子句(即mssql)之前生成返回子句

sql_compiler

返回能够处理SQL表达式的已编译。

如果这个编译器是一个,它可能只返回“self”。

update_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)

提供一个钩子来重写update..from子句的生成。

mysql和mssql会覆盖这个。

update_limit_clause(update_stmt)

为MySQL提供一个钩子,以便向更新添加限制

update_tables_clause(update_stmt, from_table, extra_froms, **kw)

提供一个钩子来重写update语句中的初始table子句。

MySQL会覆盖这个。

class sqlalchemy.sql.compiler.StrSQLCompiler(dialect, statement, column_keys=None, inline=False, **kwargs)

基地: sqlalchemy.sql.compiler.SQLCompiler

A SQLCompiler 允许少量非标准SQL功能呈现为字符串值的子类。

这个 StrSQLCompiler 每当直接对核心表达式元素进行字符串化而不调用 ClauseElement.compile() 方法。它可以呈现一组有限的非标准SQL构造,以帮助基本的字符串化,但是对于更具体的自定义或方言特定的SQL构造,有必要使用 ClauseElement.compile() 直接。

delete_extra_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)

提供一个钩子来重写delete..from子句的生成。

这可用于实现删除。例如,使用。

mysql和mssql会覆盖这个。

update_from_clause(update_stmt, from_table, extra_froms, from_hints, **kw)

提供一个钩子来重写update..from子句的生成。

mysql和mssql会覆盖这个。