这里列出了一些关键的内部结构。
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
对象。
参数: |
|
---|
编译 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. |
---|
执行 tt> ( * multiparams,** params ) T5>
执行这个编译的对象。
PARAMS T0> ¶ T1>
返回此编译对象的绑定参数。
标量
( * multiparams,** params ) T5>执行此编译对象并返回结果的标量值。
sql_compiler T0> ¶ T1>
返回一个能够处理SQL表达式的Compiled。
如果这个编译器是一个,它可能会返回'self'。
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({}))¶__init__()
method of Compiled
构建一个新的Compiled
对象。
参数: |
|
---|
编译 T0> ( T1> ) T2> ¶ T3>
compile()
方法 Compiled
生成此元素的内部字符串表示。
从版本0.7开始弃用: Compiled
对象现在可以在构造函数中编译。
define_constraint_remote_table
( 约束,表格,preparer ) ¶ T6>格式化CREATE CONSTRAINT子句的远程表子句。
执行 tt> ( * multiparams,** params ) T5>
execute()
方法 Compiled
执行这个编译的对象。
PARAMS T0> ¶ T1>
params
attribute of Compiled
返回此编译对象的绑定参数。
标量
( * multiparams,** params ) T5>scalar()
method of Compiled
执行此编译对象并返回结果的标量值。
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
,nad postgresql_ops
Any other argument specified to the constructor of Index
which is prefixed with postgresql_
will raise ArgumentError
.
不包含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)¶do_begin_twophase()
method of Dialect
在给定的连接上开始两阶段事务。
参数: |
|
---|
do_commit_twophase
(connection, xid, is_prepared=True, recover=False)¶do_commit_twophase()
method of Dialect
在给定的连接上提交两阶段事务。
参数: |
|
---|
do_prepare_twophase T0> ( T1> 连接 T2>, XID T3> ) T4> ¶ T5>
do_prepare_twophase()
method of Dialect
在给定的连接上准备一个两阶段事务。
参数: |
|
---|
do_recover_twophase T0> ( T1> 连接 T2> ) T3> ¶ T4>
do_recover_twophase()
method of Dialect
恢复给定连接上未提交的准备好的两阶段事务标识符的列表。
参数: | connection¶ – a Connection . |
---|
do_rollback_twophase
(connection, xid, is_prepared=True, recover=False)¶do_rollback_twophase()
method of Dialect
在给定连接上回滚两阶段事务。
参数: |
|
---|
engine_created T0> ( T1> 发动机 T2> ) T3> ¶ T4>
engine_created()
method of Dialect
在返回最后的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,将检查约束信息返回为带有这些键的字典列表:
版本1.1.0中的新功能
get_columns
( 连接,table_name,架构=无,**千瓦 T5> ) T6> ¶ T7>get_columns()
method of Dialect
返回有关table_name中列的信息。
给定一个Connection
,一个字符串table_name和一个可选字符串schema,将列信息返回为包含这些键的字典列表:
其他列属性可能存在。
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,将外键信息作为含有这些键的字典列表返回:
get_indexes
( 连接,table_name,架构=无,**千瓦 T5> ) T6> ¶ T7>get_indexes()
方法 Dialect
返回有关table_name中索引的信息。
给定一个Connection
,一个字符串table_name和一个可选字符串schema,将索引信息返回为带有这些键的字典列表:
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>get_temp_table_names()
method of Dialect
如果基础后端支持,则返回给定连接上的临时表名称列表。
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,返回唯一约束信息作为具有这些键的字典列表:
版本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()
。
sqlalchemy.engine.interfaces。
Dialect
¶定义特定数据库和DB-API组合的行为。
元数据定义,SQL查询生成,执行,结果集处理或任何其他数据库之间不同的任何方面都在Dialect的普通类下定义。Dialect作为其他数据库特定对象实现的工厂,包括ExecutionContext,Compiled,DefaultGenerator和TypeEngine。
所有方言实现以下属性:
str
类型,则为true。Compiled
类Compiled
类ExecutionContext
类IdentifierPreparer
类。True
if the database supports ALTER TABLE
.UPDATE
和DELETE
语句的行计数。UPDATE
和DELETE
语句的行计数。该方言的DB-API实现中存在的DB-API类型对象的映射映射到方言使用的TypeEngine实现。
这用于根据cursor.description中存在的DB-API类型将结果集应用于结果集;它只对没有显式类型映射的文本语句的结果集生效。
INSERT INTO tablename DEFAULT VALUES t0 >被支持
一个名称字典,其中包含以键名替换类名的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()
。The Dialect.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 SQLAlchemy Connection
is used in its default “autocommit” mode.
参数: | 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 T0> ( T1> 连接 T2>, XID T3> ) T4> ¶ T5>
在给定的连接上准备一个两阶段事务。
参数: |
|
---|
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)¶用给定的名称创建一个保存点。
参数: |
|
---|
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,将检查约束信息返回为带有这些键的字典列表:
版本1.1.0中的新功能
get_columns
( 连接,table_name,架构=无,**千瓦 T5> ) T6> ¶ T7>返回有关table_name中列的信息。
给定一个Connection
,一个字符串table_name和一个可选字符串schema,将列信息返回为包含这些键的字典列表:
其他列属性可能存在。
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,将外键信息作为含有这些键的字典列表返回:
get_indexes
( 连接,table_name,架构=无,**千瓦 T5> ) T6> ¶ T7>返回有关table_name中索引的信息。
给定一个Connection
,一个字符串table_name和一个可选字符串schema,将索引信息返回为带有这些键的字典列表:
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,将主键信息作为字典返回以下键:
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,返回唯一约束信息作为具有这些键的字典列表:
版本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
设置隔离级别
type_descriptor
( typeobj ) ¶将泛型转换为特定于方言的类型。
Dialect类通常使用类型模块中的types.adapt_type()
函数来完成此操作。
返回的结果被缓存每个方言类,因此可以不包含dialect-instance状态。
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 on ResultProxy
, which is a direct proxy to the DBAPI lastrowid
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。
sqlalchemy.engine.interfaces。
ExecutionContext
¶与单个执行相对应的方言的信使对象。
ExecutionContext应该有这些数据成员:
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
sqlalchemy.log。
已识别
¶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
对象。
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”类字符串解压缩到组件中。
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覆盖了这个。