版本:1.1.0b2 |发布日期:2016年7月1日

SQLAlchemy 1.1文档

核心内部

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

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

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

Compiled对象的__str__方法应该生成语句的实际文本。Compiled objects are specific to their underlying database dialect, and also may or may not be specific to the columns referenced within a particular set of bind parameters. 在任何情况下,Compiled对象都不应依赖于这些绑定参数的实际值,即使它可能会将这些值作为默认值引用。

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

构建一个新的Compiled对象。

参数:
  • dialectDialect to compile against.
  • statementClauseElement to be compiled.
  • bind – Optional Engine or Connection to compile this statement against.
  • schema_translate_map -

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

    版本1.1中的新功能

  • compile_kwargs – additional kwargs that will be passed to the initial call to Compiled.process().
编译 T0> ( T1> ) T2> ¶ T3>

产生这个元素的内部字符串表示。

从版本0.7开始弃用: Compiled对象现在可以在构造函数中编译。

construct_params T0> ( T1> PARAMS =无 T2> ) T3> ¶ T4>

返回这个编译对象的绑定参数。

参数:params – a dict of string/object pairs whose values will override bind values compiled in to the statement.
execute(*multiparams, **params)

执行这个编译的对象。

PARAMS T0> ¶ T1>

返回这个编译对象的绑定参数。

标量 * multiparams** params T5>

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

sql_compiler T0> ¶ T1>

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

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

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

基础:sqlalchemy.sql.compiler.Compiled

__init__(dialect, statement, bind=None, schema_translate_map=None, compile_kwargs=immutabledict({}))
inherited from the __init__() method of Compiled

构建一个新的Compiled对象。

参数:
  • dialectDialect to compile against.
  • statementClauseElement to be compiled.
  • bind – Optional Engine or Connection to compile this statement against.
  • schema_translate_map -

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

    版本1.1中的新功能

  • compile_kwargs – additional kwargs that will be passed to the initial call to Compiled.process().
编译 T0> ( T1> ) T2> ¶ T3>
inherited from the compile() method of Compiled

产生这个元素的内部字符串表示。

从版本0.7开始弃用: Compiled对象现在可以在构造函数中编译。

define_constraint_remote_table 约束表格preparer ¶ T6>

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

execute(*multiparams, **params)
inherited from the execute() method of Compiled

执行这个编译的对象。

PARAMS T0> ¶ T1>
继承自 params 属性 Compiled

返回这个编译对象的绑定参数。

标量 * multiparams** params T5>
inherited from the scalar() method of 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, label_length=None, **kwargs)

基础:sqlalchemy.engine.interfaces.Dialect

方言的默认实现

construct_arguments =无

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

为了实现,建立一系列的元组,如下:

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

如果上面的构造是建立在Postgresql方言上,那么Index构造现在将接受关键字参数postgresql_usingpostgresql_where,nad postgresql_opsAny other argument specified to the constructor of Index which is prefixed with postgresql_ will raise ArgumentError.

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

版本0.9.2中的新功能

也可以看看

DialectKWArgs - implementing base class which consumes DefaultDialect.construct_arguments

create_xid T0> ( T1> ) T2> ¶ T3>

创建一个随机的两阶段交易ID。

这个ID将被传递给do_begin_twophase(),do_rollback_twophase(),do_commit_twophase()。其格式未指定。

dbapi_exception_translation_map = immutabledict({})

映射用在极不寻常的情况下,即一个DBAPI发布的异常实际上并不具有它们所链接的__name__。

新版本1.0.5.

denormalize_name T0> ( T1> 名称 T2> ) T3> ¶ T4>
继承自 denormalize_name() 方法 Dialect

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

只有在方言定义了requires_name_normalize = True的情况下,才使用此方法。

do_begin_twophase(connection, xid)
inherited from the do_begin_twophase() method of Dialect

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

参数:
do_commit_twophase(connection, xid, is_prepared=True, recover=False)
inherited from the do_commit_twophase() method of Dialect

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

参数:
do_prepare_twophase(connection, xid)
inherited from the do_prepare_twophase() method of Dialect

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

参数:
do_recover_twophase T0> ( T1> 连接 T2> ) T3> ¶ T4>
inherited from the do_recover_twophase() method of Dialect

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

参数:connection – a Connection.
do_rollback_twophase(connection, xid, is_prepared=True, recover=False)
inherited from the do_rollback_twophase() method of Dialect

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

参数:
engine_created T0> ( T1> 发动机 T2> ) T3> ¶ T4>
inherited from the engine_created() method of Dialect

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

If the dialect returned a different class from the get_dialect_cls() method, then the hook is called on both classes, first on the dialect class returned by the get_dialect_cls() method and then on the class on which the method was called.

钩子应该被方言和/或包装用来对发动机或其组件应用特殊事件。特别是,它允许方言包装类应用方言级事件。

新版本1.0.3.

execute_sequence_format T0> ¶ T1>

tuple

get_check_constraints tt> 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>

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

给定一个字符串table_name和一个可选的字符串schema,将检查约束信息返回为带有这些键的字典列表:

名称
检查约束的名称
SQLTEXT
检查约束的SQL表达式
**千瓦
其他选项传递给方言的get_check_constraints()方法。

版本1.1.0新增

get_columns 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>
inherited from the get_columns() method of Dialect

返回有关table_name中列的信息。

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

名称
该列的名称
类型
[sqlalchemy.types#TypeEngine]
可空
布尔
默认
该列的默认值
自动递增
布尔
序列
一个形式的字典
{‘name’ : str, ‘start’ :int, ‘increment’: int, ‘minvalue’: int,
'maxvalue':int,'nominvalue':bool,'nomaxvalue':bool,'cycle':bool}

额外的列属性可能会出现。

get_dialect_cls T0> ( T1> 网址 T2> ) T3> ¶ T4>
继承自 get_dialect_cls() 方法 Dialect

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

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

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

新版本1.0.3.

get_foreign_keys 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>
inherited from the get_foreign_keys() method of Dialect

table_name中返回有关foreign_keys的信息。

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

名称
约束的名字
constrained_columns
构成外键的列名称的列表
referred_schema
被引用模式的名称
referred_table
被引用表的名称
referred_columns
被引用表中对应于constrained_columns的列名称列表
get_indexes 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>
继承自 get_indexes() 方法 Dialect

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

给定一个Connection,一个字符串table_name和一个可选的字符串schema,将索引信息返回为带有这些键的字典列表:

名称
索引的名字
COLUMN_NAMES
依次列名称列表
独特
布尔
get_isolation_level T0> ( T1> dbapi_conn T2> ) T3> ¶ T4>

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

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

请注意,这是一种方言级别的方法,它被用作实现ConnectionEngine隔离级别设施的一部分。对于大多数典型的用例,这些API应该是首选的。

也可以看看

Connection.get_isolation_level() - view current level

Connection.default_isolation_level - view default level

Connection.execution_options.isolation_level - set per Connection isolation level

create_engine.isolation_level - 根据Engine设置隔离级别

get_pk_constraint conntable_nameschema =无**千瓦 T5> ) T6> ¶ T7>

兼容性方法,为那些没有实现get_pk_constraint()的方言调整get_primary_keys()的结果。

get_primary_keys 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>
inherited from the get_primary_keys() method of Dialect

返回table_name中的主键信息。

已过时。此方法仅由Dialect.get_pk_constraint()的默认实现调用。方言应该直接实现Dialect.get_pk_constraint()方法。

get_table_names connectionschema = None** kw ) T5> ¶ T6>
继承自 get_table_names() 方法 Dialect

返回schema的表名列表。

get_temp_table_names connectionschema = None** kw ) T5> ¶ T6>
inherited from the get_temp_table_names() method of Dialect

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

get_temp_view_names connectionschema = None** kw ) T5> ¶ T6>

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

get_unique_constraints tt> 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>

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

给定一个字符串table_name和一个可选的字符串schema,返回唯一的约束信息作为这些键的字典列表:

名称
唯一约束的名称
COLUMN_NAMES
依次列名称列表
**千瓦
其他选项传递给方言的get_unique_constraints()方法。

版本0.9.0中新增。

get_view_definition 连接view_name架构=无**千瓦 T5> ) T6> ¶ T7>

返回视图定义。

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

get_view_names(connection, schema=None, **kw)
继承自 get_view_names() 方法 Dialect

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

模式:
可选,从非默认模式中检索名称。
has_sequence 连接sequence_nameschema =无 T5> ¶ T6>
inherited from the has_sequence() method of Dialect

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

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

has_table 连接table_nameschema =无 T5> ¶ T6>
inherited from the has_table() method of Dialect

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

给定一个Connection对象和一个字符串table_name,如果数据库中存在给定的表(可能在指定的schema内),则返回True,否则返回False 。

normalize_name T0> ( T1> 名称 T2> ) T3> ¶ T4>
inherited from the normalize_name() method of Dialect

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

只有在方言定义了requires_name_normalize = True的情况下,才使用此方法。

on_connect T0> ( T1> ) T2> ¶ T3>

返回一个可调用的对象,它建立一个新创建的DBAPI连接。

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

如果返回一个可调用对象,它将被组装到一个接收直接DBAPI连接的池监听器中,并删除所有的包装器。

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

准备者 T0> ¶ T1>

IdentifierPreparer的别名

set_isolation_level(dbapi_conn, level)
inherited from the set_isolation_level() method of Dialect

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

请注意,这是一种方言级别的方法,它被用作实现ConnectionEngine隔离级别设施的一部分。对于大多数典型的用例,这些API应该是首选的。

也可以看看

Connection.get_isolation_level() - view current level

Connection.default_isolation_level - view default level

Connection.execution_options.isolation_level - set per Connection isolation level

create_engine.isolation_level - 根据Engine设置隔离级别

statement_compiler T0> ¶ T1>

SQLCompiler的别名

type_descriptor T0> ( T1> typeobj T2> ) T3> ¶ T4>

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

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

class sqlalchemy.engine.interfaces。 Dialect

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

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

所有方言实现以下属性:

名称
从DBAPI中立的角度(即'sqlite')识别方言的名字
司机
识别方言的DBAPI的名称
位置
如果该方言的参数是位置的,则为真。
paramstyle
要使用的参数类型(某些DB-APIs支持多个参数类型)。
convert_unicode
如果应将Unicode转换应用于所有str类型,则为True。
编码
用于unicode的编码类型,通常默认为'utf-8'。
statement_compiler
用于编译SQL语句的Compiled
ddl_compiler
用于编译DDL语句的Compiled
server_version_info
包含正在使用的DB后端的版本号的元组。此值仅适用于支持方言,并通常在初始连接到数据库时填充。
default_schema_name
默认模式的名称。此值仅适用于支持方言,并通常在初始连接到数据库时填充。
execution_ctx_cls
用于处理语句执行的ExecutionContext
execute_sequence_format
无论是“元组”还是“列表”类型,取决于cursor.execute()接受的第二个参数(它们有所不同)。
报税
用于引用标识符的IdentifierPreparer类。
supports_alter
True if the database supports ALTER TABLE.
max_identifier_length
标识符名称的最大长度。
supports_unicode_statements
指示DB-API是否可以接收SQL语句作为Python unicode字符串
supports_unicode_binds
指示DB-API是否可以以Python unicode字符串的形式接收字符串绑定参数
supports_sane_rowcount
指示方言是否正确实现了UPDATEDELETE语句的行计数。
supports_sane_multi_rowcount
指示当通过executemany执行时,方言是否正确实现了UPDATEDELETE语句的行计数。
preexecute_autoincrement_sequences
如果“隐式”主键功能必须单独执行以获得其值,则为真。这是目前面向Postgresql。
implicit_returning
在INSERT执行过程中使用RETURNING或等效,以便在一次执行中加载新生成的主键和其他列缺省值,然后可以通过inserted_primary_key使用。如果插入语句显式地指定了返回(),则不使用“隐式”功能,并且不会使用inserted_primary_key。
dbapi_type_map

本方言的DB-API实现中的DB-API类型对象的映射映射到方言使用的TypeEngine实现。

这用于根据cursor.description中存在的DB-API类型将结果集应用于结果集;它只对没有显式类型映射的文本语句的结果集生效。

colspecs
来自sqlalchemy.types的TypeEngine类映射到特定于方言类的子类的字典。这个字典只是类级别的,不能从方言实例本身访问。
supports_default_values
指出是否构造INSERT INTO 表名 DEFAULT VALUES t0 >被支持
supports_sequences
指示方言是否支持CREATE SEQUENCE或类似方法。
sequences_optional
如果为True,则指示Sequence()构造上的“可选”标志是否表示不产生CREATE SEQUENCE。仅适用于支持序列的方言。当前仅用于允许在指定Sequence()的列上使用Postgresql SERIAL以在其他后端使用。
supports_native_enum
指示方言是否支持本地ENUM构造。这将防止types.Enum从使用该类型时生成一个CHECK约束。
supports_native_boolean
指示方言是否支持本地布尔结构。这将防止types.Boolean从使用该类型时生成CHECK约束。
dbapi_exception_translation_map

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

新版本1.0.5.

连接 T0> ( T1> ) T2> ¶ T3>

返回一个可调用的对象,它建立一个新创建的DBAPI连接。

callable接受一个参数“conn”,它是DBAPI连接本身。它没有回报价值。

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

如果返回一个可调用对象,它将被组装到一个接收直接DBAPI连接的池监听器中,并删除所有的包装器。

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

create_connect_args T0> ( T1> 网址 T2> ) T3> ¶ T4>

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

给定一个URL对象,返回一个由* args / ** kwargs组成的元组,直接发送到dbapi的connect函数。

create_xid T0> ( T1> ) T2> ¶ T3>

创建一个两阶段交易ID。

这个ID将被传递给do_begin_twophase(),do_rollback_twophase(),do_commit_twophase()。其格式未指定。

denormalize_name T0> ( T1> 名称 T2> ) T3> ¶ T4>

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

只有在方言定义了requires_name_normalize = True的情况下,才使用此方法。

do_begin T0> ( T1> dbapi_connection T2> ) T3> ¶ T4>

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

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

Note that Dialect.do_begin() is not called unless a Transaction object is in use. 为了进入下一个事务,当SQLAlchemy Connection被用在其中时,为了DBAPIs提供了Dialect.do_autocommit()钩子,默认“自动提交”模式。

参数:dbapi_connection – a DBAPI connection, typically proxied within a ConnectionFairy.
do_begin_twophase(connection, xid)

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

参数:
do_close T0> ( T1> dbapi_connection T2> ) T3> ¶ T4>

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

当连接已经从池中分离出来,或者被返回超出池的正常容量时,该钩子由Pool调用。

0.8版本中的新功能

do_commit T0> ( T1> dbapi_connection T2> ) T3> ¶ T4>

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

参数:dbapi_connection – a DBAPI connection, typically proxied within a ConnectionFairy.
do_commit_twophase(connection, xid, is_prepared=True, recover=False)

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

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

提供一个cursor.execute(语句, 参数)的实现。

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

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

参数集合不应该被发送。

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

提供cursor.executemany(语句, 参数)的实现。

do_prepare_twophase(connection, xid)

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

参数:
do_recover_twophase T0> ( T1> 连接 T2> ) T3> ¶ T4>

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

参数:connection – a Connection.
do_release_savepoint(connection, name)

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

参数:
do_rollback T0> ( T1> dbapi_connection T2> ) T3> ¶ T4>

在给定DB-API连接的情况下提供connection.rollback()的实现。

参数:dbapi_connection – a DBAPI connection, typically proxied within a ConnectionFairy.
do_rollback_to_savepoint(connection, name)

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

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

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

参数:
do_savepoint(connection, name)

用给定的名字创建一个保存点。

参数:
classmethod tt> engine_created engine

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

If the dialect returned a different class from the get_dialect_cls() method, then the hook is called on both classes, first on the dialect class returned by the get_dialect_cls() method and then on the class on which the method was called.

钩子应该被方言和/或包装用来对发动机或其组件应用特殊事件。特别是,它允许方言包装类应用方言级事件。

新版本1.0.3.

get_check_constraints tt> 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>

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

给定一个字符串table_name和一个可选的字符串schema,将检查约束信息返回为带有这些键的字典列表:

名称
检查约束的名称
SQLTEXT
检查约束的SQL表达式
**千瓦
其他选项传递给方言的get_check_constraints()方法。

版本1.1.0新增

get_columns 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>

返回有关table_name中列的信息。

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

名称
该列的名称
类型
[sqlalchemy.types#TypeEngine]
可空
布尔
默认
该列的默认值
自动递增
布尔
序列
一个形式的字典
{‘name’ : str, ‘start’ :int, ‘increment’: int, ‘minvalue’: int,
'maxvalue':int,'nominvalue':bool,'nomaxvalue':bool,'cycle':bool}

额外的列属性可能会出现。

classmethod tt> get_dialect_cls url tt>>

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

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

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

新版本1.0.3.

get_foreign_keys 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>

table_name中返回有关foreign_keys的信息。

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

名称
约束的名字
constrained_columns
构成外键的列名称的列表
referred_schema
被引用模式的名称
referred_table
被引用表的名称
referred_columns
被引用表中对应于constrained_columns的列名称列表
get_indexes 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>

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

给定一个Connection,一个字符串table_name和一个可选的字符串schema,将索引信息返回为带有这些键的字典列表:

名称
索引的名字
COLUMN_NAMES
依次列名称列表
独特
布尔
get_isolation_level T0> ( T1> dbapi_conn T2> ) T3> ¶ T4>

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

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

请注意,这是一种方言级别的方法,它被用作实现ConnectionEngine隔离级别设施的一部分。对于大多数典型的用例,这些API应该是首选的。

也可以看看

Connection.get_isolation_level() - view current level

Connection.default_isolation_level - view default level

Connection.execution_options.isolation_level - set per Connection isolation level

create_engine.isolation_level - 根据Engine设置隔离级别

get_pk_constraint tt> 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>

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

给定一个Connection,一个字符串table_name和一个可选的字符串schema,将主键信息作为一个字典返回:

constrained_columns
构成主键的列名称的列表
名称
主键约束的可选名称。
get_primary_keys 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>

返回table_name中的主键信息。

已过时。此方法仅由Dialect.get_pk_constraint()的默认实现调用。方言应该直接实现Dialect.get_pk_constraint()方法。

get_table_names connectionschema = None** kw ) T5> ¶ T6>

返回schema的表名列表。

get_temp_table_names connectionschema = None** kw ) T5> ¶ T6>

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

get_temp_view_names connectionschema = None** kw ) T5> ¶ T6>

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

get_unique_constraints tt> 连接table_name架构=无**千瓦 T5> ) T6> ¶ T7>

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

给定一个字符串table_name和一个可选的字符串schema,返回唯一的约束信息作为这些键的字典列表:

名称
唯一约束的名称
COLUMN_NAMES
依次列名称列表
**千瓦
其他选项传递给方言的get_unique_constraints()方法。

版本0.9.0中新增。

get_view_definition 连接view_name架构=无**千瓦 T5> ) T6> ¶ T7>

返回视图定义。

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

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

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

模式:
可选,从非默认模式中检索名称。
has_sequence 连接sequence_nameschema =无 T5> ¶ T6>

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

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

has_table 连接table_nameschema =无 T5> ¶ T6>

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

给定一个Connection对象和一个字符串table_name,如果数据库中存在给定的表(可能在指定的schema内),则返回True,否则返回False 。

初始化 T0> ( T1> 连接 T2> ) T3> ¶ T4>

在连接的方言创造的方言调用。

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

通过这里传递的连接是一个SQLAlchemy连接对象,具有完整的功能。

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

is_disconnect(e, connection, cursor)

如果给定的DB-API错误指示无效的连接,则返回True

normalize_name T0> ( T1> 名称 T2> ) T3> ¶ T4>

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

只有在方言定义了requires_name_normalize = True的情况下,才使用此方法。

反映 tt> 连接include_columnsexclude_columns t5 > ) T6> ¶ T7>

从数据库加载表格描述。

给定一个Connection和一个Table对象,从数据库中反映它的列和属性。

这个方法的实现由DefaultDialect.reflecttable()提供,它使用Inspector来获取列信息。

Dialects should not seek to implement this method, and should instead implement individual schema inspection operations such as Dialect.get_columns(), Dialect.get_pk_constraint(), etc.

reset_isolation_level T0> ( T1> dbapi_conn T2> ) T3> ¶ T4>

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

请注意,这是一种方言级别的方法,它被用作实现ConnectionEngine隔离级别设施的一部分。对于大多数典型的用例,这些API应该是首选的。

也可以看看

Connection.get_isolation_level() - view current level

Connection.default_isolation_level - view default level

Connection.execution_options.isolation_level - set per Connection isolation level

create_engine.isolation_level - 根据Engine设置隔离级别

set_isolation_level(dbapi_conn, level)

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

请注意,这是一种方言级别的方法,它被用作实现ConnectionEngine隔离级别设施的一部分。对于大多数典型的用例,这些API应该是首选的。

也可以看看

Connection.get_isolation_level() - view current level

Connection.default_isolation_level - view default level

Connection.execution_options.isolation_level - set per Connection isolation level

create_engine.isolation_level - 根据Engine设置隔离级别

classmethod type_descriptor(typeobj)

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

Dialect类通常使用类型模块中的types.adapt_type()函数来完成此操作。

返回的结果是缓存的每个方言类,因此可以不包含dialect-instance状态。

class sqlalchemy.engine.default。 DefaultExecutionContext

基础:sqlalchemy.engine.interfaces.ExecutionContext

get_lastrowid T0> ( T1> ) T2> ¶ T3>

在INSERT之后返回self.cursor.lastrowid或等价物。

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

这个函数只能用于支持“隐式”主键生成的方言,将preexecute_autoincrement_sequences设置为False,并且没有明确的id值绑定到语句。

函数被调用一次,直接在post_exec()之后,事务被提交或ResultProxy被生成之前。如果post_exec()方法将值分配给 self._lastrowid T0>,该值代替主叫get_lastrowid的()使用。

Note that this method is not equivalent to the lastrowid method on ResultProxy, which is a direct proxy to the DBAPI lastrowid accessor in all cases.

get_result_processor typecolnamecoltype ¶ T6>

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

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

set_input_sizes(translate=None, exclude_types=None)

给定一个游标和ClauseParameters,使用bind参数的TypeEngine对象中的DB-API类型,在游标上调用setinputsizes()的适当样式。

这种方法只能由那些需要它的方言调用,目前是cx_oracle。

class sqlalchemy.engine.interfaces。 ExecutionContext

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

ExecutionContext应该有这些数据成员:

连接
连接对象,可以由默认值生成器自由使用来执行SQL。此连接应引用root_connection的相同的基础连接/事务资源。
root_connection
Connection对象是这个ExecutionContext的源头。此连接可能有close_with_result = True设置,在这种情况下,它只能使用一次。
方言
创建这个ExecutionContext的方言。
光标
从连接采购的DB-API游标,
编译
如果传递给构造函数,执行sqlalchemy.engine.base.Compiled对象,
声明
要执行的语句的字符串版本。传递给构造函数,或者必须在pre_exec()完成时从sql.Compiled对象创建。
参数
绑定传递给execute()方法的参数。对于已编译的语句,这是一个词典或词典列表。对于文本语句,它应该采用适合于方言参数样式的格式(即,用于非位置的字典或列表的列表,或者用于位置的列表/列表的列表)。
isinsert
如果语句是INSERT,则为真。
isupdate
如果语句是UPDATE,则为true。
should_autocommit
如果陈述是“可提交”陈述,则为真。
prefetch_cols
客户端默认触发的列对象列表。适用于插入和更新。
postfetch_cols
一个Column对象的列表,其中的服务器端默认或内联SQL表达式值被触发。适用于插入和更新。
create_cursor T0> ( T1> ) T2> ¶ T3>

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

一些方言可能希望改变connection.cursor()的行为,比如postgresql可能会返回一个PG“服务器端”的游标。

异常 =无

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

该属性仅在ConnectionEvents.dbapi_error()事件中有意义。

新版本0.9.7.

get_rowcount T0> ( T1> ) T2> ¶ T3>

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

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

handle_dbapi_exception T0> ( T1> ë T2> ) T3> ¶ T4>

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

is_disconnect =无

如果此ExecutionContext试图执行语句时捕获到DBAPI级别的异常,则布尔标志设置为True或False。

该属性仅在ConnectionEvents.dbapi_error()事件中有意义。

新版本0.9.7.

lastrow_has_defaults T0> ( T1> ) T2> ¶ T3>

如果最后一个INSERT或UPDATE行包含内联或数据库缺省值,则返回True。

post_exec T0> ( T1> ) T2> ¶ T3>

在执行一个编译语句之后调用。

If a compiled statement was passed to this ExecutionContext, the last_insert_ids, last_inserted_params, etc. 在此方法完成后,数据成员应该可用。

pre_exec T0> ( T1> ) T2> ¶ T3>

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

如果将编译语句传递给此ExecutionContext,则在完成此语句后,必须初始化语句参数数据成员。

结果 T0> ( T1> ) T2> ¶ T3>

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

返回一个ResultProxy。

should_autocommit_text T0> ( T1> 语句 T2> ) T3> ¶ T4>

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

class sqlalchemy.log。 已识别
class sqlalchemy.sql.compiler.IdentifierPreparer(dialect, initial_quote='"', final_quote=None, escape_quote='"', omit_schema=False)

根据选项处理标识符的引用和案例折叠。

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

构建一个新的IdentifierPreparer对象。

initial_quote
开始分隔标识符的字符。
final_quote
结束分隔标识符的字符。默认为initial_quote
omit_schema
防止预先设定模式名称。用于不支持模式的数据库。
format_column(column, use_table=False, name=None, table_name=None)

准备一个引用的列名称。

format_schema(name, quote=None)

准备一个带引号的模式名称。

format_table use_schema = True名称=无 ) T5> ¶ T6>

准备一个带引号的表和模式名称。

format_table_seq use_schema = True t5 >

将表格名称和模式格式化为一个元组。

quote(ident, force=None)

有条件地引用标识符。

应该考虑使用“强制”标志。

quote_identifier T0> ( T1> 值 T2> ) T3> ¶ T4>

引用一个标识符。

子类应该重写这个以提供依赖于数据库的引用行为。

quote_schema(schema, force=None)

有条件地引用一个模式。

子类可以覆盖此以提供模式名称的数据库相关引用行为。

应该考虑使用“强制”标志。

unformat_identifiers T0> ( T1> 标识符 T2> ) T3> ¶ T4>

将“schema.table.column”类字符串解压缩到组件中。

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对象。

参数:
  • dialectDialect to be used
  • statementClauseElement to be compiled
  • column_keys – a list of column names to be compiled into an INSERT or UPDATE statement.
  • inline – whether to generate INSERT statements as “inline”, e.g. not formatted to return any generated defaults
  • kwargs – additional keyword arguments to be consumed by the superclass.
ansi_bind_rules = False

SQL 92不允许在SELECT的columns子句中使用绑定参数,也不允许含糊不清的表达式,例如“?=?“。如果目标驱动程序/ DB执行此操作,编译器子类可以将此标志设置为False

construct_params params = None_group_number = None_check = True ) T5> ¶ T6>

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

default_from T0> ( T1> ) T2> ¶ T3>

当SELECT语句没有from时,调用并且没有FROM子句被追加。

让Oracle有机会在字符串输出上加上FROM DUAL

escape_literal_column T0> ( T1> 文本 T2> ) T3> ¶ T4>

为literal_column()构造提供转义。

get_select_precolumns select** kw t5 >

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

isdelete = False

可以在实例级设置类级别的默认值来定义这个Compiled实例是否代表INSERT / UPDATE / DELETE

isinsert = False

可以在实例级设置类级别的默认值来定义这个Compiled实例是否代表INSERT / UPDATE / DELETE

isupdate = False

可以在实例级设置类级别的默认值来定义这个Compiled实例是否代表INSERT / UPDATE / DELETE

PARAMS T0> ¶ T1>

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

render_literal_value(value, type_)

以绑定参数的形式呈现绑定参数的值。

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

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

render_table_with_column_in_update_from = False

设置为True类,以指示多表UPDATE语句中的SET子句应使用表名限定列(即,仅限于MySQL)

返回 =无

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

returned_precedes_values = False

设置为True classwide,在VALUES或WHERE子句(即MSSQL)之前生成RETURNING子句,

update_from_clause update_stmtfrom_tableextra_fromsfrom_hints t5 >,** kw

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

MySQL和MSSQL覆盖这个。

update_limit_clause T0> ( T1> update_stmt T2> ) T3> ¶ T4>

为MySQL提供一个钩子来将LIMIT添加到UPDATE中

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

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

MySQL覆盖了这个。