SqlAlchemy 2.0 中文文档(四十七)(4)https://developer.aliyun.com/article/1563049
参数:
connection
– 一个Connection
。xid
– xidis_prepared
– 是否调用了TwoPhaseTransaction.prepare()
。recover
– 如果传递了恢复标志。
method do_execute(cursor, statement, parameters, context=None)
提供 cursor.execute(statement, parameters)
的实现。
method do_execute_no_params(cursor, statement, context=None)
提供 cursor.execute(statement)
的实现。
不应发送参数集合。
method do_executemany(cursor, statement, parameters, context=None)
提供 cursor.executemany(statement, parameters)
的实现。
method do_ping(dbapi_connection: DBAPIConnection) → bool
检查 DBAPI 连接并在连接可用时返回 True。
method do_prepare_twophase(connection: Connection, xid: Any) → None
继承自 Dialect
方法的 Dialect.do_prepare_twophase()
。
在给定连接上准备一个两阶段事务。
参数:
connection
– 一个Connection
。xid
– xid
method do_recover_twophase(connection: Connection) → List[Any]
继承自 Dialect
方法的 Dialect.do_recover_twophase()
。
在给定连接上恢复未提交的准备好的两阶段事务标识符列表。
参数:
connection – 一个 Connection
。
method do_release_savepoint(connection, name)
在连接上释放命名保存点。
参数:
connection
– 一个Connection
。name
– 保存点名称。
method do_rollback(dbapi_connection)
提供 connection.rollback()
的实现,给定一个 DB-API 连接。
参数:
dbapi_connection – 一个 DBAPI 连接,通常在 ConnectionFairy
中代理。
method do_rollback_to_savepoint(connection, name)
将连接回滚到命名保存点。
参数:
connection
– 一个Connection
。name
– 保存点名称。
method do_rollback_twophase(connection: Connection, xid: Any, is_prepared: bool = True, recover: bool = False) → None
继承自 Dialect
方法的 Dialect.do_rollback_twophase()
。
在给定连接上回滚两阶段事务。
参数:
connection
– 一个Connection
。xid
– xidis_prepared
– 是否调用了TwoPhaseTransaction.prepare()
。recover
– 如果传递了 recover 标志。
method do_savepoint(connection, name)
使用给定名称创建一个保存点。
参数:
connection
– 一个Connection
。name
– 保存点名称。
method do_set_input_sizes(cursor: DBAPICursor, list_of_tuples: _GenericSetInputSizesType, context: ExecutionContext) → Any
继承自 Dialect
的 Dialect.do_set_input_sizes()
*方法。
使用适当的参数调用cursor.setinputsizes()
方法。
如果Dialect.bind_typing
属性设置为BindTyping.SETINPUTSIZES
值,则调用此钩子。参数数据以元组列表的形式传递(paramname,dbtype,sqltype),其中paramname
是语句中参数的键,dbtype
是 DBAPI 数据类型,sqltype
是 SQLAlchemy 类型。元组的顺序是正确的参数顺序。
自 1.4 版本新推出。
在 2.0 版本中更改:- 通过将Dialect.bind_typing
设置为BindTyping.SETINPUTSIZES
来启用 setinputsizes 模式。接受use_setinputsizes
参数的方言应适当设置此值。
method do_terminate(dbapi_connection)
提供一个实现了尽可能不阻塞的connection.close()
的钩子,给定一个 DBAPI 连接。
在绝大多数情况下,这只是调用.close()
,但是对于某些 asyncio 方言可能调用不同的 API 功能。
当连接被回收或无效时,此钩子由Pool
调用。
自 1.4.41 版本新推出。
attribute driver: str
方言的 DBAPI 的标识名称。
attribute engine_config_types: Mapping[str, Any] = {'echo': <function bool_or_str.<locals>.bool_or_value>, 'echo_pool': <function bool_or_str.<locals>.bool_or_value>, 'future': <function asbool>, 'max_overflow': <function asint>, 'pool_recycle': <function asint>, 'pool_size': <function asint>, 'pool_timeout': <function asint>}
一个字符串键的映射,可以是引擎配置中的类型转换函数。
classmethod engine_created(engine: Engine) → None
继承自 Dialect
的 Dialect.engine_created()
*方法。
一个方便的钩子,在返回最终Engine
之前调用。
如果方言从get_dialect_cls()
方法返回了不同的类,则该钩子将在两个类上调用,首先在由get_dialect_cls()
方法返回的方言类上调用,然后在调用方法的类上调用。
钩子应由方言和/或包装器用于将特殊事件应用于引擎或其组件。特别是,它允许方言包装类应用方言级事件。
attribute exclude_set_input_sizes: Set[Any] | None = None
设置应在自动 cursor.setinputsizes() 调用中排除的 DBAPI 类型对象集合。
仅当 bind_typing 为 BindTyping.SET_INPUT_SIZES 时才使用此选项。
attribute execute_sequence_format
tuple
的别名
attribute execution_ctx_cls
DefaultExecutionContext
的别名
attribute favor_returning_over_lastrowid: bool = False
对于支持 lastrowid 和 RETURNING 插入策略的后端,请优先使用 RETURNING 进行简单的单整数 pk 插入。
在大多数后端上,cursor.lastrowid 往往更具性能。
attribute full_returning
自版本 2.0 弃用:full_returning 已弃用,请改用 insert_returning、update_returning、delete_returning
classmethod get_async_dialect_cls(url: URL) → Type[Dialect]
继承自 Dialect
的 Dialect.get_async_dialect_cls()
方法
给定一个 URL,返回将由异步引擎使用的 Dialect
。
默认情况下,这是 Dialect.get_dialect_cls()
的别名,只返回 cls。如果一个方言在同一名称下提供了同步和异步版本,则可以使用它,例如 psycopg
驱动程序。
版本 2 中的新功能。
另请参见
Dialect.get_dialect_cls()
method get_check_constraints(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedCheckConstraint]
继承自 Dialect
的 Dialect.get_check_constraints()
方法
返回 table_name
中检查约束的信息。
给定一个字符串 table_name
和一个可选的字符串 schema
,将检查约束信息作为与 ReflectedCheckConstraint
字典相对应的字典列表返回。
这是一个内部方言方法。应用程序应使用 Inspector.get_check_constraints()
。
method get_columns(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedColumn]
继承自 Dialect
的 Dialect.get_columns()
方法
返回关于 table_name
中列的信息。
给定一个 Connection
、一个字符串 table_name
和一个可选的字符串 schema
,将列信息作为与 ReflectedColumn
字典相对应的字典列表返回。
这是一个内部方言方法。 应用程序应使用Inspector.get_columns()
。
method get_default_isolation_level(dbapi_conn)
给定一个 DBAPI 连接,返回其隔离级别,或者如果无法检索到隔离级别,则返回默认隔离级别。
可以由子类覆盖,以提供对于无法可靠检索实际隔离级别的数据库的“回退”隔离级别。
默认情况下,调用Interfaces.get_isolation_level()
方法,传播引发的任何异常。
新版本中新增 1.3.22。
classmethod get_dialect_cls(url: URL) → Type[Dialect]
继承自 方言
的 Dialect.get_dialect_cls()
方法
给定一个 URL,返回将要使用的方言
。
这是一个挂钩,允许外部插件围绕现有方言提供功能,通过允许从基于入口点的 URL 加载插件,然后插件返回要使用的实际方言。
默认情况下,这只是返回 cls。
method get_dialect_pool_class(url: URL) → Type[Pool]
返回用于给定 URL 的 Pool 类。
method get_driver_connection(connection)
返回由外部驱动程序包返回的连接对象。
对于使用 DBAPI 兼容驱动程序的普通方言,此调用将只返回作为参数传递的connection
。 对于改用非 DBAPI 兼容驱动程序进行适配的方言,例如在适配异步驱动程序时,此调用将返回驱动程序返回的类似连接的对象。
新版本中新增 1.4.24。
method get_foreign_keys(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedForeignKeyConstraint]
继承自 方言
的 Dialect.get_foreign_keys()
方法
返回关于table_name
中外键的信息。
给定一个连接
,一个字符串table_name
,和一个可选字符串schema
,返回作为与ReflectedForeignKeyConstraint
字典对应的字典列表的外键信息。
这是一个内部方言方法。 应用程序应使用Inspector.get_foreign_keys()
。
method get_indexes(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedIndex]
继承自 方言
的 Dialect.get_indexes()
方法
返回关于table_name
中索引的信息。
给定一个连接
,一个字符串table_name
和一个可选字符串schema
,返回作为与ReflectedIndex
字典对应的字典列表的索引信息。
这是一个内部方言方法。应用程序应使用 Inspector.get_indexes()
。
method get_isolation_level(dbapi_connection: DBAPIConnection) → Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']
继承自 Dialect
的 Dialect.get_isolation_level()
方法
给定一个 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
的隔离级别
method get_isolation_level_values(dbapi_conn: DBAPIConnection) → List[Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']]
继承自 Dialect
的 Dialect.get_isolation_level_values()
方法
返回一个字符串隔离级别名称序列,该序列被此方言接受。
可用名称应使用以下约定:
- 使用大写命名。隔离级别方法将接受小写名称,但在传递给方言之前会将其标准化为大写。
- 单词之间应该用空格分隔,而不是下划线,例如
REPEATABLE READ
。在传递给方言之前,隔离级别名称将下划线转换为空格。 - 对于标准隔离名称,如果后端支持,应为
READ UNCOMMITTED
、READ COMMITTED
、REPEATABLE READ
、SERIALIZABLE
- 如果方言支持自动提交选项,则应使用隔离级别名称
AUTOCOMMIT
。 - 其他隔离模式也可能存在,只要它们以大写形式命名并使用空格而不是下划线。
此函数用于默认方言检查给定的隔离级别参数是否有效,否则会引发ArgumentError
。
在可能的情况下,方法会传递一个 DBAPI 连接,以便方言自身需要查询连接本身以确定此列表,但是大多数后端都会返回一个硬编码的值列表。如果方言支持“AUTOCOMMIT”,那么该值也应该存在于返回的序列中。
该方法默认引发NotImplementedError
。如果方言未实现此方法,则默认方言将不会在将其传递给Dialect.set_isolation_level()
方法之前对给定的隔离级别值执行任何检查。这是为了与尚未实现此方法的第三方方言保持向后兼容。
版本 2.0 新增。
method get_materialized_view_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
继承自 Dialect
的 Dialect.get_materialized_view_names()
方法
返回数据库中所有可用物化视图名称的列表。
这是一个内部方言方法。应用程序应该使用Inspector.get_materialized_view_names()
。
参数:
模式 –
查询的模式名称,如果不是默认模式。
版本 2.0 新增。
method get_multi_check_constraints(connection, **kw)
返回给定schema
中所有表的检查约束信息。
这是一个内部方言方法。应用程序应该使用Inspector.get_multi_check_constraints()
。
注意
DefaultDialect
提供了一个默认实现,将针对Dialect.get_table_names()
、Dialect.get_view_names()
或Dialect.get_materialized_view_names()
返回的每个对象调用单表方法,具体取决于提供的kind
。希望支持更快实现的方言应该实现此方法。
版本 2.0 新增。
method get_multi_columns(connection, **kw)
返回给定schema
中所有表的列信息。
这是一个内部方言方法。应用程序应该使用Inspector.get_multi_columns()
。
注意
DefaultDialect
提供了一个默认实现,将针对Dialect.get_table_names()
、Dialect.get_view_names()
或Dialect.get_materialized_view_names()
返回的每个对象调用单表方法,具体取决于提供的kind
。希望支持更快实现的方言应该实现此方法。
版本 2.0 新增。
method get_multi_foreign_keys(connection, **kw)
返回给定 schema
中所有表的外键信息。
这是一个内部方言方法。应用程序应该使用 Inspector.get_multi_foreign_keys()
。
注意
DefaultDialect
提供了一个默认实现,它会根据提供的 kind
对 Dialect.get_table_names()
、Dialect.get_view_names()
或 Dialect.get_materialized_view_names()
返回的每个对象调用单个表方法。希望支持更快实现的方言应该实现这个方法。
2.0 版本中新增。
method get_multi_indexes(connection, **kw)
返回给定 schema
中所有表的索引信息。
这是一个内部方言方法。应用程序应该使用 Inspector.get_multi_indexes()
。
注意
DefaultDialect
提供了一个默认实现,它会根据提供的 kind
对 Dialect.get_table_names()
、Dialect.get_view_names()
或 Dialect.get_materialized_view_names()
返回的每个对象调用单个表方法。希望支持更快实现的方言应该实现这个方法。
2.0 版本中新增。
method get_multi_pk_constraint(connection, **kw)
返回给定 schema
中所有表的主键约束信息。
这是一个内部方言方法。应用程序应该使用 Inspector.get_multi_pk_constraint()
。
注意
DefaultDialect
提供了一个默认实现,它会根据提供的 kind
对 Dialect.get_table_names()
、Dialect.get_view_names()
或 Dialect.get_materialized_view_names()
返回的每个对象调用单个表方法。希望支持更快实现的方言应该实现这个方法。
2.0 版本中新增。
method get_multi_table_comment(connection, **kw)
返回给定 schema
中所有表的表注释信息。
这是一个内部方言方法。应用程序应该使用 Inspector.get_multi_table_comment()
。
注意
DefaultDialect
提供了一个默认实现,它会根据提供的 kind
对 Dialect.get_table_names()
、Dialect.get_view_names()
或 Dialect.get_materialized_view_names()
返回的每个对象调用单个表方法。希望支持更快实现的方言应该实现这个方法。
2.0 版本中新增。
method get_multi_table_options(connection, **kw)
返回给定 schema
中表创建时指定的选项字典。
这是一个内部方言方法。应用程序应该使用 Inspector.get_multi_table_options()
。
注意
DefaultDialect
提供了一个默认实现,它会根据提供的 kind
对 Dialect.get_table_names()
、Dialect.get_view_names()
或 Dialect.get_materialized_view_names()
返回的每个对象调用单个表方法。希望支持更快实现的方言应该实现这个方法。
2.0 版本中新增。
method get_multi_unique_constraints(connection, **kw)
返回给定schema
中所有表的唯一约束信息。
这是一个内部方言方法。应用程序应该使用Inspector.get_multi_unique_constraints()
。
注意
DefaultDialect
提供了一个默认实现,将根据提供的kind
调用Dialect.get_table_names()
、Dialect.get_view_names()
或Dialect.get_materialized_view_names()
返回的每个对象的单表方法。希望支持更快实现的方言应该实现这个方法。
新版本 2.0。
method get_pk_constraint(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → ReflectedPrimaryKeyConstraint
继承自 Dialect
的 Dialect.get_pk_constraint()
*方法。
返回table_name
上主键约束的信息。
给定Connection
、字符串table_name
和可选字符串schema
,返回与ReflectedPrimaryKeyConstraint
字典对应的主键信息字典。
这是一个内部方言方法。应用程序应该使用Inspector.get_pk_constraint()
。
method get_schema_names(connection: Connection, **kw: Any) → List[str]
继承自 Dialect
的 Dialect.get_schema_names()
*方法。
返回数据库中所有模式名称的列表。
这是一个内部方言方法。应用程序应该使用Inspector.get_schema_names()
。
method get_sequence_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
继承自 Dialect
的 Dialect.get_sequence_names()
*方法。
返回数据库中所有序列名称的列表。
这是一个内部方言方法。应用程序应该使用Inspector.get_sequence_names()
。
参数:
schema – 要查询的模式名称,如果不是默认模式。
新版本 1.4。
method get_table_comment(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → ReflectedTableComment
继承自 Dialect
的 Dialect.get_table_comment()
*方法。
返回由table_name
标识的表的“注释”。
给定字符串table_name
和可选字符串schema
,返回与ReflectedTableComment
字典对应的表注释信息字典。
这是一个内部方言方法。应用程序应该使用Inspector.get_table_comment()
。
抛出:
对于不支持注释的方言,抛出 NotImplementedError
。
版本 1.2 中的新功能。
method get_table_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
继承自 Dialect
的 Dialect.get_table_names()
方法。
返回 schema
的表名列表。
这是一个内部方言方法。应用程序应使用 Inspector.get_table_names()
。
method get_table_options(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → Dict[str, Any]
继承自 Dialect
的 Dialect.get_table_options()
方法。
返回创建 table_name
时指定的选项字典。
这是一个内部方言方法。应用程序应使用 Inspector.get_table_options()
。
method get_temp_table_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
继承自 Dialect
的 Dialect.get_temp_table_names()
方法。
返回给定连接上的临时表名列表,如果底层后端支持。
这是一个内部方言方法。应用程序应使用 Inspector.get_temp_table_names()
。
method get_temp_view_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
继承自 Dialect
的 Dialect.get_temp_view_names()
方法。
返回给定连接上的临时视图名列表,如果底层后端支持。
这是一个内部方言方法。应用程序应使用 Inspector.get_temp_view_names()
。
method get_unique_constraints(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedUniqueConstraint]
继承自 Dialect
的 Dialect.get_unique_constraints()
方法。
返回 table_name
中唯一约束的信息。
给定一个字符串 table_name
和一个可选的字符串 schema
,返回唯一约束信息,作为与 ReflectedUniqueConstraint
字典相对应的字典列表。
这是一个内部方言方法。应用程序应使用 Inspector.get_unique_constraints()
。
method get_view_definition(connection: Connection, view_name: str, schema: str | None = None, **kw: Any) → str
继承自 Dialect
的 Dialect.get_view_definition()
方法。
返回普通或材料化视图定义。
这是一个内部方言方法。应用程序应使用 Inspector.get_view_definition()
。
给定一个 Connection
,一个字符串 view_name
,和一个可选的字符串 schema
,返回视图定义。
method get_view_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
继承自 Dialect
的 Dialect.get_view_names()
方法。
返回数据库中所有非材料化视图名称的列表。
这是一个内部方言方法。应用程序应使用 Inspector.get_view_names()
。
参数:
schema – 要查询的模式名称,如果不是默认模式。
method has_index(connection, table_name, index_name, schema=None, **kw)
检查数据库中特定索引名称的存在性。
给定一个 Connection
对象,一个字符串 table_name
和字符串索引名称,如果给定表上存在给定名称的索引,则返回 True
,否则返回 False
。
DefaultDialect
在 Dialect.has_table()
和 Dialect.get_indexes()
方法方面实现了这一点,但是方言可以实现更高效的版本。
这是一个内部方言方法。应用程序应使用 Inspector.has_index()
。
版本 1.4 中的新功能。
method has_schema(connection: Connection, schema_name: str, **kw: Any) → bool
检查数据库中特定模式名称的存在性。
给定一个 Connection
对象,一个字符串 schema_name
,如果存在给定的模式,则返回 True
,否则返回 False
。
DefaultDialect
通过检查 Dialect.get_schema_names()
返回的模式中是否存在 schema_name
来实现这一点,但是方言可以实现更高效的版本。
这是一个内部方言方法。应用程序应使用 Inspector.has_schema()
。
版本 2.0 中的新功能。
method has_sequence(connection: Connection, sequence_name: str, schema: str | None = None, **kw: Any) → bool
从 Dialect
的 Dialect.has_sequence()
方法继承
检查数据库中特定序列的存在性。
给定一个 Connection
对象和一个字符串 sequence_name,如果数据库中存在给定的序列,则返回 True
,否则返回 False
。
这是一个内部方言方法。应用程序应使用 Inspector.has_sequence()
。
method has_table(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → bool
从 Dialect
的 Dialect.has_table()
方法继承
对于内部方言使用,检查数据库中特定表或视图的存在性。
给定一个 Connection
对象,一个字符串 table_name 和可选的模式名称,如果数据库中存在给定的表,则返回 True,否则返回 False。
此方法作为公共面向的 Inspector.has_table()
方法的底层实现,并且在内部用于实现方法如 Table.create()
和 MetaData.create_all()
的“checkfirst”行为。
注意
此方法由 SQLAlchemy 内部使用,并发布以便第三方方言可以提供实现。这不是用于检查表存在性的公共 API。请使用 Inspector.has_table()
方法。
2.0 版本更改::: Dialect.has_table()
现在正式支持检查其他类似表的对象:
- 任何类型的视图(普通或材料化)
- 任何类型的临时表
以前,这两个检查没有正式规定,不同的方言在行为上会有所不同。方言测试套件现在包括对所有这些对象类型的测试,支持视图或临时表的程度应该寻求支持定位这些对象以实现完全的兼容性。
attribute has_terminate: bool = False
此方言是否具有单独的“终止”实现,不会阻塞或需要等待。
attribute identifier_preparer: IdentifierPreparer
一旦构造了 DefaultDialect
的实例,此元素将引用一个 IdentifierPreparer
的实例。
classmethod import_dbapi() → module
继承自 Dialect
的 Dialect.import_dbapi()
*方法。
导入此方言使用的 DBAPI 模块。
此处返回的 Python 模块对象将被分配为构造的方言的一个实例变量,名称为 .dbapi
。
2.0 版本更改:Dialect.import_dbapi()
类方法从先前的方法 .Dialect.dbapi()
重命名,该方法将在方言实例化时由 DBAPI 模块本身替换,因此以两种不同方式使用相同的名称。如果第三方方言上存在 .Dialect.dbapi()
类方法,将使用它并���出弃用警告。
attribute include_set_input_sizes: Set[Any] | None = None
应包含在自动 cursor.setinputsizes() 调用中的一组 DBAPI 类型对象。
仅在 bind_typing 为 BindTyping.SET_INPUT_SIZES 时使用。
method initialize(connection)
在使用连接创建方言时调用。
允许方言根据服务器版本信息或其他属性配置选项。
此处传递的连接是一个具有完整功能的 SQLAlchemy 连接对象。
应通过 super()调用基础方言的 initialize()方法。
注意
从 SQLAlchemy 1.4 开始,在调用任何Dialect.on_connect()
钩子之前调用此方法。
attribute inline_comments: bool = False
指示方言是否支持与表或列定义内联的注释 DDL。如果为 False,则意味着必须使用 ALTER 来设置表和列的注释。
attribute insert_executemany_returning: bool
当 dialect.do_executemany()被使用时,方言/驱动程序/数据库支持某些方法来提供 INSERT…RETURNING 支持。
attribute insert_executemany_returning_sort_by_parameter_order: bool
当 dialect.do_executemany()与设置了Insert.returning.sort_by_parameter_order
参数一起使用时,方言/驱动程序/数据库支持某些方法来提供 INSERT…RETURNING 支持。
attribute insert_returning: bool = False
如果方言支持 INSERT 与 RETURNING
2.0 版本中的新功能。
attribute insertmanyvalues_implicit_sentinel: InsertmanyvaluesSentinelOpts = symbol('NOT_SUPPORTED')
指示数据库是否支持一种形式的批量插入,其中自增整数主键可以可靠地用作 INSERT 的行的排序。
2.0.10 版本中的新功能。
另请参见
将返回的行与参数集相关联
attribute insertmanyvalues_max_parameters: int = 32700
与 insertmanyvalues_page_size 替代,还将基于语句中的参数总数限制页面大小。
attribute insertmanyvalues_page_size: int = 1000
每个ExecuteStyle.INSERTMANYVALUES
执行中渲染为单个 INSERT…VALUES()语句的行数。
默认方言将此默认设置为 1000。
2.0 版本中的新功能。
另请参见
Connection.execution_options.insertmanyvalues_page_size
- Connection
上可用的执行选项,语句
attribute is_async: bool = False
此方言是否用于 asyncio 使用。
method is_disconnect(e, connection, cursor)
如果给定的 DB-API 错误表示无效连接,则返回 True
attribute label_length: int | None
SQL 标签的可选用户定义的最大长度
classmethod load_provisioning()
为此方言设置 provision.py 模块。
对于包含一个设置供应跟随者的 provision.py 模块的方言,此方法应启动该过程。
典型实现可能是:
@classmethod def load_provisioning(cls): __import__("mydialect.provision")
默认方法假定当前方言的所有者包中有一个名为provision.py
的模块,基于__module__
属性:
@classmethod def load_provisioning(cls): package = ".".join(cls.__module__.split(".")[0:-1]) try: __import__(package + ".provision") except ImportError: pass
1.3.14 版本中的新功能。
attribute loaded_dbapi
attribute max_identifier_length: int = 9999
标识符名称的最大长度。
attribute name: str = 'default'
方言的从 DBAPI 中立点来看的标识名称(即“sqlite”)
method normalize_name(name)
如果检测到名称不区分大小写,则将给定名称转换为小写。
仅当方言定义 requires_name_normalize=True 时才使用此方法。
method on_connect()
返回一个可调用对象,该对象设置新创建的 DBAPI 连接。
这个可调用函数应该接受一个名为“conn”的参数,它就是 DBAPI 连接本身。内部可调用函数没有返回值。
例如:
class MyDialect(default.DefaultDialect): # ... def on_connect(self): def do_on_connect(connection): connection.execute("SET SPECIAL FLAGS etc") return do_on_connect
SqlAlchemy 2.0 中文文档(四十七)(6)https://developer.aliyun.com/article/1563052