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
对象。参数: - dialect¶ –
Dialect
to compile against. - statement¶ –
ClauseElement
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()
.
- dialect¶ –
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.
执行 tt> ( * multiparams,** params ) T5>
执行这个编译的对象。
PARAMS T0> ¶ T1>
返回此编译对象的绑定参数。
标量
( * multiparams,** params ) T5>执行此编译对象并返回结果的标量值。
sql_compiler T0> ¶ T1>
返回一个能够处理SQL表达式的Compiled。
如果这个编译器是一个,它可能会返回'self'。
-
- 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 ofCompiled
构建一个新的
Compiled
对象。参数: - dialect¶ –
Dialect
to compile against. - statement¶ –
ClauseElement
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()
.
- dialect¶ –
define_constraint_remote_table
( 约束,表格,preparer ) ¶ T6>格式化CREATE CONSTRAINT子句的远程表子句。
执行 tt> ( * multiparams,** params ) T5>
- 继承自
execute()
方法Compiled
执行这个编译的对象。
PARAMS T0> ¶ T1>
- inherited from the
params
attribute ofCompiled
返回此编译对象的绑定参数。
标量
( * multiparams,** params ) T5>- inherited from the
scalar()
method ofCompiled
执行此编译对象并返回结果的标量值。
-
- 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 ) T14> ¶ T15> 基础:
sqlalchemy.engine.interfaces.Dialect
方言的默认实现
construct_arguments
=无 ¶可选的各种SQLAlchemy结构的参数说明符集,通常是模式项。
为了实现,建立一系列元组,如下所示:
construct_arguments = [ (schema.Index, { "using": False, "where": None, "ops": None }) ]
如果上述构造是在Postgresql方言中建立的,那么
Index
构造现在将接受关键字参数postgresql_using
,postgresql_where
,nadpostgresql_ops
Any other argument specified to the constructor ofIndex
which is prefixed withpostgresql_
will raiseArgumentError
.不包含
construct_arguments
成员的方言不会参与参数验证系统。对于这样的方言,任何参数名称都可以被所有参与的结构接受,这些结构在以该方言名称为前缀的参数名称空间内。这里的基本原理是,尚未实现此功能的第三方方言继续以旧方式运作。版本0.9.2中的新功能
也可以看看
DialectKWArgs
- 实现了基类,它消耗了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 ofDialect
在给定的连接上开始两阶段事务。
参数: - connection¶ – a
Connection
. - xid ¶ - xid
- connection¶ – a
-
do_commit_twophase
(connection, xid, is_prepared=True, recover=False)¶ - inherited from the
do_commit_twophase()
method ofDialect
在给定的连接上提交两阶段事务。
参数: - connection¶ – a
Connection
. - xid ¶ - xid
- is_prepared ¶ - 是否调用了
TwoPhaseTransaction.prepare()
。 - 恢复 ¶ - 如果恢复标志已通过。
- connection¶ – a
do_prepare_twophase T0> ( T1> 连接 T2>, XID T3> ) T4> ¶ T5>
- inherited from the
do_prepare_twophase()
method ofDialect
在给定的连接上准备一个两阶段事务。
参数: - connection¶ – a
Connection
. - xid ¶ - xid
- connection¶ – a
do_recover_twophase T0> ( T1> 连接 T2> ) T3> ¶ T4>
- inherited from the
do_recover_twophase()
method ofDialect
恢复给定连接上未提交的准备好的两阶段事务标识符的列表。
参数: connection¶ – a Connection
.
-
do_rollback_twophase
(connection, xid, is_prepared=True, recover=False)¶ - inherited from the
do_rollback_twophase()
method ofDialect
在给定连接上回滚两阶段事务。
参数: - connection¶ – a
Connection
. - xid ¶ - xid
- is_prepared ¶ - 是否调用了
TwoPhaseTransaction.prepare()
。 - 恢复 ¶ - 如果恢复标志已通过。
- connection¶ – a
engine_created T0> ( T1> 发动机 T2> ) T3> ¶ T4>
- inherited from the
engine_created()
method ofDialect
在返回最后的
Engine
之前调用一个方便的钩子。如果方言从
get_dialect_cls()
方法返回了一个不同的类,那么将在两个类上调用该钩子,首先在由get_dialect_cls()
方法返回的方言类上调用并且然后在调用该方法的类上。钩子应该被方言和/或包装用来对引擎或其组件应用特殊事件。特别是,它允许方言包装类应用方言级事件。
版本1.0.3中的新功能
execute_sequence_format T0> ¶ T1>
tuple
get_check_constraints
( 连接,table_name,架构=无,**千瓦 T5> ) T6> ¶ T7>- 继承自
get_check_constraints()
方法Dialect
在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 ofDialect
返回有关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>- 继承自
get_foreign_keys()
方法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>
- 继承自
get_isolation_level()
方法Dialect
给定一个DBAPI连接,返回它的隔离级别。
使用
Connection
对象时,可以使用Connection.connection
访问器获取相应的DBAPI连接。请注意,这是一种方言级别的方法,用作实现
Connection
和Engine
隔离级别工具的一部分;这些API应该是大多数典型用例的首选。也可以看看
Connection.get_isolation_level()
- 查看当前级别Connection.default_isolation_level
- 查看默认级别Connection.execution_options.isolation_level
- 根据Connection
设置隔离级别create_engine.isolation_level
- 根据Engine
设置隔离级别
get_pk_constraint
( conn,table_name,schema =无,**千瓦 T5> ) T6> ¶ T7>兼容性方法,为那些没有实现get_pk_constraint()的方言调整get_primary_keys()的结果。
get_primary_keys
( 连接,table_name,架构=无,**千瓦 T5> ) T6> ¶ T7>- 继承自
get_primary_keys()
方法Dialect
返回有关table_name中主键的信息。
已过时。此方法仅由
Dialect.get_pk_constraint()
的默认实现调用。方言应该直接实施Dialect.get_pk_constraint()
方法。
get_table_names
( connection,schema = None,** kw ) T5> ¶ T6>- 继承自
get_table_names()
方法Dialect
返回schema的表名列表。
get_temp_table_names
( 连接,schema =无,** kw ) T5> ¶ T6>- inherited from the
get_temp_table_names()
method ofDialect
如果基础后端支持,则返回给定连接上的临时表名称列表。
get_temp_view_names
( 连接,schema =无,** kw ) T5> ¶ T6>- 继承自
get_temp_view_names()
方法Dialect
如果基础后端支持,则返回给定连接上的临时视图名称列表。
get_unique_constraints T0> ( T1> 连接 T2>,表名 T3>,架构=无 T4>, **千瓦 T5> ) T6> ¶ T7>
- 继承自
get_unique_constraints()
方法Dialect
返回关于table_name中的唯一约束的信息。
给定一个字符串table_name和一个可选的字符串schema,返回唯一约束信息作为具有这些键的字典列表:
- 名称
- 唯一约束的名称
- COLUMN_NAMES
- 按列顺序排列列表
- **千瓦
- 其他选项传递给方言的get_unique_constraints()方法。
版本0.9.0中的新功能
get_view_definition
( 连接,view_name,架构=无,**千瓦 T5> ) T6> ¶ T7>- 继承自
get_view_definition()
方法Dialect
返回视图定义。
给定一个
Connection
,一个字符串view_name和一个可选字符串schema,返回视图定义。
get_view_names
( connection,schema = None,** kw ) T5> ¶ T6>- 继承自
get_view_names()
方法Dialect
返回数据库中所有可用视图名称的列表。
- 模式:
- 可选,从非默认模式中检索名称。
has_sequence
( 连接,sequence_name,schema =无 T5> ¶ T6>- 继承自
has_sequence()
方法Dialect
检查数据库中是否存在特定的序列。
给定一个
Connection
对象和一个字符串sequence_name,如果给定的序列存在于数据库中,则返回True,否则返回False。
has_table
( 连接,table_name,schema =无 T5> ¶ T6>- 继承自
has_table()
方法Dialect
检查数据库中是否存在特定的表。
给定一个
Connection
对象和一个字符串table_name,如果给定的表(可能在指定的schema内)存在于数据库中,则返回True,否则返回False 。
normalize_name T0> ( T1> 名称 T2> ) T3> ¶ T4>
- 继承自
normalize_name()
方法Dialect
如果检测为不区分大小写,则将给定名称转换为小写。
此方法仅在方言定义requires_name_normalize = True时使用。
on_connect T0> ( T1> ) T2> ¶ T3>
返回一个可调用的对象,用于设置新创建的DBAPI连接。
这用于设置方言范围内的每个连接选项,例如隔离模式,unicode模式等。
如果返回一个可调用对象,则它将被组装到一个接收直接DBAPI连接的池监听器中,并删除所有的包装器。
如果返回None,则不会生成侦听器。
准备者 T0> ¶ T1>
IdentifierPreparer
的别名
set_isolation_level
( dbapi_conn,level ) ¶- 继承自
set_isolation_level()
方法Dialect
给定一个DBAPI连接,设置其隔离级别。
请注意,这是一种方言级别的方法,用作实现
Connection
和Engine
隔离级别工具的一部分;这些API应该是大多数典型用例的首选。也可以看看
Connection.get_isolation_level()
- 查看当前级别Connection.default_isolation_level
- 查看默认级别Connection.execution_options.isolation_level
- 根据Connection
设置隔离级别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的普通类下定义。Dialect作为其他数据库特定对象实现的工厂,包括ExecutionContext,Compiled,DefaultGenerator和TypeEngine。
所有方言实现以下属性:
- 名称
- 从DBAPI中立角度(即'sqlite')识别方言的名称
- 司机
- 识别方言的DBAPI的名称
- 位置
- 如果此方言的参数是位置的,则为真。
- paramstyle
- 要使用的参数类型(某些DB-API支持多个参数类型)。
- convert_unicode
- 如果应将Unicode转换应用于所有
str
类型,则为true。 - 编码
- 用于unicode的编码类型通常默认为'utf-8'。
- statement_compiler
- 一个用于编译SQL语句的
Compiled
类 - ddl_compiler
- 用于编译DDL语句的
Compiled
类 - server_version_info
- 包含正在使用的DB后端的版本号的元组。此值仅适用于支持方言,并且通常在初始连接到数据库时填充。
- default_schema_name
- 默认模式的名称。此值仅适用于支持方言,并且通常在初始连接到数据库时填充。
- None
- 一个用于处理语句执行的
ExecutionContext
类 - execute_sequence_format
- 或者'tuple'或'list'类型,这取决于cursor.execute()接受的第二个参数(它们有所不同)。
- 报税
- 用于引用标识符的
IdentifierPreparer
类。 - supports_alter
True
if the database supportsALTER TABLE
.- max_identifier_length
- 标识符名称的最大长度。
- supports_unicode_statements
- 指示DB-API是否可以接收SQL语句作为Python unicode字符串
- supports_unicode_binds
- 指示DB-API是否可以以Python unicode字符串的形式接收字符串绑定参数
- supports_sane_rowcount
- 指示方言是否正确实现了
UPDATE
和DELETE
语句的行计数。 - supports_sane_multi_rowcount
- 指示当通过executemany执行时,方言是否正确实现了
UPDATE
和DELETE
语句的行计数。 - preexecute_autoincrement_sequences
- 如果'隐式'主键功能必须单独执行才能获得它们的值,则为真。这目前面向Postgresql。
- implicit_returning
- 在INSERT执行过程中使用RETURNING或等效,以便在一次执行中加载新生成的主键和其他列缺省值,然后可以通过inserted_primary_key使用这些缺省值。如果insert语句显式指定了returns(),则不会使用“隐式”功能,并且不会使用inserted_primary_key。
- dbapi_type_map
该方言的DB-API实现中存在的DB-API类型对象的映射映射到方言使用的TypeEngine实现。
这用于根据cursor.description中存在的DB-API类型将结果集应用于结果集;它只对没有显式类型映射的文本语句的结果集生效。
- colspecs
- 将来自sqlalchemy.types的TypeEngine类的字典映射到特定于方言类的子类。该字典仅为类级别,不能从方言实例本身访问。
- supports_default_values
- 指示结构
INSERT INTO tablename DEFAULT VALUES t0 >被支持
- supports_sequences
- 指示方言是否支持CREATE SEQUENCE或类似方式。
- sequences_optional
- 如果为True,则指示Sequence()构造上的“可选”标志是否表示不生成CREATE SEQUENCE。仅适用于支持序列的方言。目前仅用于允许Postgresql SERIAL在指定Sequence()的列上用于其他后端的用法。
- 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提供的。
请注意,除非正在使用
Transaction
对象,否则不会调用Dialect.do_begin()
。TheDialect.do_autocommit()
hook is provided for DBAPIs that need some extra commands emitted after a commit in order to enter the next transaction, when the SQLAlchemyConnection
is used in its default “autocommit” mode.参数: dbapi_connection¶ – a DBAPI connection, typically proxied within a ConnectionFairy
.
-
do_begin_twophase
(connection, xid)¶ 在给定的连接上开始两阶段事务。
参数: - connection¶ – a
Connection
. - xid ¶ - xid
- connection¶ – a
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)¶ 在给定的连接上提交两阶段事务。
参数: - connection¶ – a
Connection
. - xid ¶ - xid
- is_prepared ¶ - 是否调用了
TwoPhaseTransaction.prepare()
。 - 恢复 ¶ - 如果恢复标志已通过。
- connection¶ – a
-
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 T0> ( T1> 连接 T2>, XID T3> ) T4> ¶ T5>
在给定的连接上准备一个两阶段事务。
参数: - connection¶ – a
Connection
. - xid ¶ - xid
- connection¶ – a
do_recover_twophase T0> ( T1> 连接 T2> ) T3> ¶ T4>
恢复给定连接上未提交的准备好的两阶段事务标识符的列表。
参数: connection¶ – a Connection
.
-
do_release_savepoint
(connection, name)¶ 释放连接上的命名保存点。
参数: - connection¶ – a
Connection
. - 名称 ¶ - 保存点名称。
- connection¶ – a
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)¶ 将连接回滚到指定的保存点。
参数: - connection¶ – a
Connection
. - 名称 ¶ - 保存点名称。
- connection¶ – a
-
do_rollback_twophase
(connection, xid, is_prepared=True, recover=False)¶ 在给定连接上回滚两阶段事务。
参数: - connection¶ – a
Connection
. - xid ¶ - xid
- is_prepared ¶ - 是否调用了
TwoPhaseTransaction.prepare()
。 - 恢复 ¶ - 如果恢复标志已通过。
- connection¶ – a
-
do_savepoint
(connection, name)¶ 用给定的名称创建一个保存点。
参数: - connection¶ – a
Connection
. - 名称 ¶ - 保存点名称。
- connection¶ – a
- classmethod
engine_created
( engine ) 在返回最后的
Engine
之前调用一个方便的钩子。如果方言从
get_dialect_cls()
方法返回了一个不同的类,那么将在两个类上调用该钩子,首先在由get_dialect_cls()
方法返回的方言类上调用并且然后在调用该方法的类上。钩子应该被方言和/或包装用来对引擎或其组件应用特殊事件。特别是,它允许方言包装类应用方言级事件。
版本1.0.3中的新功能
get_check_constraints
( 连接,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
get_dialect_cls
( url ) 给定一个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连接。请注意,这是一种方言级别的方法,用作实现
Connection
和Engine
隔离级别工具的一部分;这些API应该是大多数典型用例的首选。也可以看看
Connection.get_isolation_level()
- 查看当前级别Connection.default_isolation_level
- 查看默认级别Connection.execution_options.isolation_level
- 根据Connection
设置隔离级别create_engine.isolation_level
- 根据Engine
设置隔离级别
get_pk_constraint
( 连接,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
( connection,schema = None,** kw ) T5> ¶ T6>返回schema的表名列表。
get_temp_table_names
( 连接,schema =无,** kw ) T5> ¶ T6>如果基础后端支持,则返回给定连接上的临时表名称列表。
get_temp_view_names
( 连接,schema =无,** kw ) T5> ¶ T6>如果基础后端支持,则返回给定连接上的临时视图名称列表。
get_unique_constraints T0> ( T1> 连接 T2>,表名 T3>,架构=无 T4>, **千瓦 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 ) T5> ¶ T6>返回数据库中所有可用视图名称的列表。
- 模式:
- 可选,从非默认模式中检索名称。
has_sequence
( 连接,sequence_name,schema =无 T5> ¶ T6>检查数据库中是否存在特定的序列。
给定一个
Connection
对象和一个字符串sequence_name,如果给定的序列存在于数据库中,则返回True,否则返回False。
has_table
( 连接,table_name,schema =无 T5> ¶ T6>检查数据库中是否存在特定的表。
给定一个
Connection
对象和一个字符串table_name,如果给定的表(可能在指定的schema内)存在于数据库中,则返回True,否则返回False 。
初始化 T0> ( T1> 连接 T2> ) T3> ¶ T4>
在连接方式的策略化创作中调用。
允许方言根据服务器版本信息或其他属性配置选项。
这里传递的连接是一个具有完整功能的SQLAlchemy连接对象。
基本方言的initialize()方法应该通过super()调用。
is_disconnect tt> ( e,连接,游标 ) ¶ T6>
如果给定的DB-API错误指示无效连接,则返回True
normalize_name T0> ( T1> 名称 T2> ) T3> ¶ T4>
如果检测为不区分大小写,则将给定名称转换为小写。
此方法仅在方言定义requires_name_normalize = True时使用。
反映 tt> ( 连接,表格,include_columns,exclude_columns t5 > ) T6> ¶ T7>
从数据库加载表格描述。
给定一个
Connection
和一个Table
对象,从数据库中反映它的列和属性。该方法的实现由
DefaultDialect.reflecttable()
提供,它使用Inspector
来检索列信息。方言应该not试图实现这个方法,而应该实现单独的模式检查操作,比如
Dialect.get_columns()
,Dialect.get_pk_constraint()
reset_isolation_level T0> ( T1> dbapi_conn T2> ) T3> ¶ T4>
给定一个DBAPI连接,将其隔离恢复为默认值。
请注意,这是一种方言级别的方法,用作实现
Connection
和Engine
隔离级别工具的一部分;这些API应该是大多数典型用例的首选。也可以看看
Connection.get_isolation_level()
- 查看当前级别Connection.default_isolation_level
- 查看默认级别Connection.execution_options.isolation_level
- 根据Connection
设置隔离级别create_engine.isolation_level
- 根据Engine
设置隔离级别
set_isolation_level
( dbapi_conn,level ) ¶给定一个DBAPI连接,设置其隔离级别。
请注意,这是一种方言级别的方法,用作实现
Connection
和Engine
隔离级别工具的一部分;这些API应该是大多数典型用例的首选。也可以看看
Connection.get_isolation_level()
- 查看当前级别Connection.default_isolation_level
- 查看默认级别Connection.execution_options.isolation_level
- 根据Connection
设置隔离级别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,则该值将用于代替调用get_lastrowid()。
Note that this method is not equivalent to the
lastrowid
method onResultProxy
, which is a direct proxy to the DBAPIlastrowid
accessor in all cases.
get_result_processor
( type_,colname,coltype ) ¶ 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,则为真。
- should_autocommit
- 如果陈述是“可提交”陈述,则为真。
- prefetch_cols
- 客户端默认触发的列对象列表。适用于插入和更新。
- postfetch_cols
- 列表的一个列表对象的服务器端默认或内联SQL表达式值被触发。适用于插入和更新。
create_cursor T0> ( T1> ) T2> ¶ T3>
返回从此ExecutionContext连接生成的新游标。
有些方言可能希望改变connection.cursor()的行为,比如postgresql,它可能会返回一个PG“服务器端”光标。
异常
=无 ¶ExecutionContext尝试执行语句时捕获到的DBAPI级异常。
该属性仅在
ConnectionEvents.dbapi_error()
事件中有意义。版本0.9.7中的新功能
-
get_rowcount
()¶ 返回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>
在执行编译语句后调用。
如果一个编译语句被传递给了这个ExecutionContext,那么这个last_insert_ids,last_inserted_params等等此方法完成后,数据成员应该可用。
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 =无 ) t5 >准备一个带引号的模式名称。
format_table
( table,use_schema = True,name =无 ) T5> ¶ T6>准备一个带引号的表和模式名称。
format_table_seq
( 表,use_schema = True ) t5 >将表格名称和模式格式化为元组。
引用
( ident,force =无 ) t5 >有条件地引用标识符。
'force'标志应该被视为已弃用。
quote_identifier T0> ( T1> 值 T2> ) T3> ¶ T4>
引用一个标识符。
子类应该覆盖它以提供依赖于数据库的引用行为。
-
quote_schema
(schema, force=None)¶ 有条件地引用模式。
子类可以覆盖此以提供模式名称的数据库相关引用行为。
'force'标志应该被视为已弃用。
unformat_identifiers T0> ( T1> 标识符 T2> ) T3> ¶ T4>
将“schema.table.column”类字符串解压缩到组件中。
-
- class
sqlalchemy.sql.compiler。
SQLCompiler
( dialect,语句column_keys = None,inline = False,** kwargs / T10> 基础:
sqlalchemy.sql.compiler.Compiled
Compiled
的默认实现。将
ClauseElement
对象编译为SQL字符串。-
__init__
(dialect, statement, column_keys=None, inline=False, **kwargs)¶ 构建一个新的
SQLCompiler
对象。参数:
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语句没有froms时,调用并且不添加FROM子句。
让Oracle有机会在字符串输出中加入
FROM DUAL
。
escape_literal_column T0> ( T1> 文本 T2> ) T3> ¶ T4>
为literal_column()构造提供转义。
get_select_precolumns
( select,** kw ) t5 >在构建
SELECT
语句时调用,位置就在列表之前。
isdelete
= False ¶可以在实例级别设置的类级缺省值来定义此编译的实例是否代表INSERT / UPDATE / DELETE
isinsert
= False ¶可以在实例级别设置的类级缺省值来定义此编译的实例是否代表INSERT / UPDATE / DELETE
isupdate
= False ¶可以在实例级别设置的类级缺省值来定义此编译的实例是否代表INSERT / UPDATE / DELETE
PARAMS T0> ¶ T1>
返回嵌入到此编译对象中的绑定参数字典,用于那些存在的值。
-
render_literal_value
(value, type_)¶ 将绑定参数的值呈现为带引号的文字。
这用于不接受目标驱动程序/数据库绑定参数的语句部分。
这应该由使用DBAPI的引用服务的子类实现。
render_table_with_column_in_update_from
= False ¶设置为True class,以指示多表UPDATE语句中的SET子句应使用表名限定列(即仅限于MySQL)
返回
=无 ¶如果语句是CRUD并且隐式或显式地定义返回列,则保存“返回”列集合
returning_precedes_values
= False ¶设置为True classwide以在VALUES或WHERE子句(即MSSQL)之前生成RETURNING子句,
update_from_clause
( update_stmt,from_table,extra_froms,from_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,/ T5> ) T6> ¶ T7>提供一个钩子来覆盖UPDATE语句中的初始表子句。
MySQL覆盖了这个。
-