SqlAlchemy 2.0 中文文档(四十七)(6)https://developer.aliyun.com/article/1563052
另请参阅
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']]
返回一个由此方言接受的字符串隔离级别名称序列。
可用的名称应遵循以下约定:
- 使用大写名称。隔离级别方法将接受小写名称,但在传递给方言之前将其规范化为大写。
- 应将分隔的单词用空格分隔,而不是下划线,例如
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]
返回数据库中所有可用的物化视图名称列表。
这是一个内部方言方法。应用程序应使用Inspector.get_materialized_view_names()
。
参数:
模式 -
要查询的模式名称,如果不是默认模式。
新版本 2.0 中。
method get_multi_check_constraints(connection: Connection, schema: str | None = None, filter_names: Collection[str] | None = None, **kw: Any) → Iterable[Tuple[TableKey, List[ReflectedCheckConstraint]]]
返回给定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: Connection, schema: str | None = None, filter_names: Collection[str] | None = None, **kw: Any) → Iterable[Tuple[TableKey, List[ReflectedColumn]]]
返回给定 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: Connection, schema: str | None = None, filter_names: Collection[str] | None = None, **kw: Any) → Iterable[Tuple[TableKey, List[ReflectedForeignKeyConstraint]]]
返回给定 schema
中所有表中外键的信息。
这是一个内部方言方法。应用程序应该使用 Inspector.get_multi_foreign_keys()
。
注意
DefaultDialect
提供了一个默认实现,将对由 Dialect.get_table_names()
、Dialect.get_view_names()
或 Dialect.get_materialized_view_names()
返回的每个对象调用单个表方法,取决于提供的 kind
。希望支持更快实现的方言应该实现此方法。
从版本 2.0 开始。
method get_multi_indexes(connection: Connection, schema: str | None = None, filter_names: Collection[str] | None = None, **kw: Any) → Iterable[Tuple[TableKey, List[ReflectedIndex]]]
返回给定 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: Connection, schema: str | None = None, filter_names: Collection[str] | None = None, **kw: Any) → Iterable[Tuple[TableKey, ReflectedPrimaryKeyConstraint]]
返回给定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: Connection, schema: str | None = None, filter_names: Collection[str] | None = None, **kw: Any) → Iterable[Tuple[TableKey, ReflectedTableComment]]
返回给定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: Connection, schema: str | None = None, filter_names: Collection[str] | None = None, **kw: Any) → Iterable[Tuple[TableKey, Dict[str, Any]]]
返回在创建给定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: Connection, schema: str | None = None, filter_names: Collection[str] | None = None, **kw: Any) → Iterable[Tuple[TableKey, List[ReflectedUniqueConstraint]]]
返回给定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
返回table_name
表上主键约束的信息。
给定一个Connection
、一个字符串table_name
和一个可选的字符串schema
,返回作为字典对应于ReflectedPrimaryKeyConstraint
字典的主键信息。
这是一个内部方言方法。应用程序应该使用Inspector.get_pk_constraint()
。
method get_schema_names(connection: Connection, **kw: Any) → List[str]
返回数据库中所有模式名称的列表。
这是一个内部方言方法。应用程序应该使用Inspector.get_schema_names()
。
method get_sequence_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
返回数据库中所有序列名称的列表。
这是一个内部方言方法。应用程序应该使用Inspector.get_sequence_names()
。
参数:
schema - 要查询的模式名称,如果不是默认模式。
新版本 1.4 中引入。
method get_table_comment(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → ReflectedTableComment
返回由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]
返回schema
的表名称列表。
这是一个内部方言方法。应用程序应使用Inspector.get_table_names()
。
method get_table_options(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → Dict[str, Any]
返回创建table_name
时指定的选项字典。
这是一个内部方言方法。应用程序应使用Inspector.get_table_options()
。
method get_temp_table_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
返回给定连接上的临时表名称列表(如果底层后端支持)。
这是一个内部方言方法。应用程序应使用Inspector.get_temp_table_names()
。
method get_temp_view_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
返回给定连接上的临时视图名称列表(如果底层后端支持)。
这是一个内部方言方法。应用程序应使用Inspector.get_temp_view_names()
。
method get_unique_constraints(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedUniqueConstraint]
返回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
返回普通或物化视图定义。
这是一个内部方言方法。应用程序应使用Inspector.get_view_definition()
。
给定一个Connection
对象,一个字符串view_name
和一个可选的字符串schema
,返回视图定义。
method get_view_names(connection: Connection, schema: str | None = None, **kw: Any) → List[str]
返回数据库中所有非物化视图名称的列表。
这是一个内部方言方法。应用程序应使用Inspector.get_view_names()
。
参数:
schema – 查询的模式名称,如果不是默认模式。
method has_index(connection: Connection, table_name: str, index_name: str, schema: str | None = None, **kw: Any) → bool
检查数据库中特定索引名称的存在。
给定一个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
检查数据库中特定序列的存在。
给定一个Connection
对象和一个字符串sequence_name
,如果数据库中存在给定的序列,则返回True
,否则返回False
。
这是一个内部方言方法。应用程序应该使用Inspector.has_sequence()
。
method has_table(connection: Connection, table_name: str, schema: str | None = None, **kw: Any) → bool
对内部方言使用,检查数据库中特定表或视图的存在。
给定一个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
此方言是否具有单独的“终止”实现,不会阻塞或需要等待。
attribute identifier_preparer: IdentifierPreparer
一旦构建了DefaultDialect
的实例,此元素将引用一个IdentifierPreparer
的实例。
classmethod import_dbapi() → module
导入此方言使用的 DBAPI 模块。
此处返回的 Python 模块对象将分配为构建的方言的一个实例变量,名称为.dbapi
。
从版本 2.0 开始更改:Dialect.import_dbapi()
类方法从先前的方法.Dialect.dbapi()
重命名,该方法将在方言实例化时由 DBAPI 模块本身替换,因此以两种不同的方式使用相同的名称。如果第三方方言上存在.Dialect.dbapi()
类方法,将使用它并发出弃用警告。
attribute include_set_input_sizes: Set[Any] | None
应包括在自动 cursor.setinputsizes()调用中的一组���该包含的 DBAPI 类型对象。
仅在 bind_typing 为 BindTyping.SET_INPUT_SIZES 时使用。
method initialize(connection: Connection) → None
在连接的策略化创建期间调用与连接一起的方言。
允许方言根据服务器版本信息或其他属性配置选项。
此处传递的连接是一个完全具备功能的 SQLAlchemy Connection 对象。
应通过 super()调用基本方言的 initialize()方法。
注意
从 SQLAlchemy 1.4 开始,此方法在调用任何Dialect.on_connect()
钩子之前被调用。
attribute inline_comments: bool
表示方言支持与表或列的定义相一致的内联注释 DDL。如果为 False,则意味着必须使用 ALTER 来设置表和列的注释。
attribute insert_executemany_returning: bool
当使用dialect.do_executemany()
时,方言/驱动程序/数据库支持某种方式提供 INSERT…RETURNING 支持。
attribute insert_executemany_returning_sort_by_parameter_order: bool
当使用Insert.returning.sort_by_parameter_order
参数设置时,方言/驱动程序/数据库支持某种方式提供 INSERT…RETURNING 支持,同时使用dialect.do_executemany()
。
attribute insert_returning: bool
如果方言支持 INSERT 时的 RETURNING
2.0 版本中的新功能。
attribute insertmanyvalues_implicit_sentinel: InsertmanyvaluesSentinelOpts
表示数据库支持一种形式的批量插入,其中自增整数主键可可靠用作插入行的排序。
2.0.10 版本中的新功能。
另请参阅
将 RETURNING 行与参数集相关联
attribute insertmanyvalues_max_parameters: int
insertmanyvalues_page_size 的替代方案,还将基于语句中参数的总数限制页面大小。
attribute insertmanyvalues_page_size: int
每个ExecuteStyle.INSERTMANYVALUES
执行中渲染为单独的 INSERT…VALUES()语句的行数。
默认方言将此默认值设置为 1000。
2.0 版本中的新功能。
另请参阅
Connection.execution_options.insertmanyvalues_page_size
- 在Connection
上可用的执行选项,语句
attribute is_async: bool
此方言是否用于 asyncio 使用。
method is_disconnect(e: Exception, connection: PoolProxiedConnection | DBAPIConnection | None, cursor: DBAPICursor | None) → bool
如果给定的 DB-API 错误指示无效连接,则返回 True
attribute label_length: int | None
SQL 标签的可选用户定义的最大长度
classmethod load_provisioning() → None
为此方言设置 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
与.dbapi 相同,但永远不会是 None;如果没有设置 DBAPI,将会引发错误。
2.0 版本中的新功能。
attribute max_identifier_length: int
标识符名称的最大长度。
attribute name: str
从 DBAPI 中立的角度确定方言的标识名称(即‘sqlite’)
method normalize_name(name: str) → str
如果检测到名称不区分大小写,则将给定名称转换为小写。
仅当方言定义 requires_name_normalize=True 时才使用此方法。
method on_connect() → Callable[[Any], Any] | None
返回一个可调用对象,用于设置新创建的 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
用于设置方言范围内的每个连接选项,如隔离模式、Unicode 模式等。
通过使用PoolEvents.connect()
事件钩子调用“do_on_connect”可调用对象,然后解包 DBAPI 连接并将其传递给可调用对象。
1.4 版本中的更改:对于方言的第一个连接,不再两次调用 on_connect 挂钩。但是,在调用Dialect.initialize()
方法之前仍会调用 on_connect 挂钩。
在版本 1.4.3 中更改:从一个新方法 on_connect_url 调用 on_connect 挂钩,传递用于创建连接参数的 URL。如果方言需要用于连接的 URL 对象以获取其他上下文,则方言可以实现 on_connect_url 而不是 on_connect。
如果返回 None,则不会生成事件监听器。
返回:
一个可接受单个 DBAPI 连接作为参数的可调用对象,或者为 None。
另请参阅
Dialect.connect()
- 允许控制 DBAPI connect()
序列本身。
Dialect.on_connect_url()
- 取代Dialect.on_connect()
以在上下文中还接收URL
对象。
method on_connect_url(url: URL) → Callable[[Any], Any] | None
返回一个可调用对象,该对象设置新创建的 DBAPI 连接。
这种方法是一种新的钩子,它在方言实现时取代了Dialect.on_connect()
方法。当方言没有实现时,它会直接调用Dialect.on_connect()
方法,以保持与现有方言的兼容性。不会有对Dialect.on_connect()
的弃用预期。
可调用对象应接受一个名为“conn”的参数,该参数是 DBAPI 连接本身。内部可调用对象没有返回值。
例如:
class MyDialect(default.DefaultDialect): # ... def on_connect_url(self, url): def do_on_connect(connection): connection.execute("SET SPECIAL FLAGS etc") return do_on_connect
此方法用于设置方言范围内的每个连接选项,如隔离模式、Unicode 模式等。
此方法与Dialect.on_connect()
不同之处在于,它接收与连接参数相关的URL
对象。通常从Dialect.on_connect()
挂钩获取此对象的唯一方法是查看Engine
本身,但此 URL 对象可能已被插件替换。
注意
Dialect.on_connect_url()
的默认实现是调用Dialect.on_connect()
方法。因此,如果一个方言实现了这个方法,Dialect.on_connect()
方法 将不会被调用,除非覆盖方言从此处直接调用它。
版本 1.4.3 中新添加的 Dialect.on_connect_url()
通常调用 Dialect.on_connect()
。
参数:
url – 一个表示传递给 Dialect.create_connect_args()
方法的 URL
对象。
返回:
一个接受单个 DBAPI 连接作为参数的可调用对象,或者为 None。
参见
Dialect.on_connect()
attribute paramstyle: str
要使用的 paramstyle(一些 DB-API 支持多种 paramstyles)。
attribute positional: bool
如果此 Dialect 的 paramstyle 是按位置的,则为 True。
attribute preexecute_autoincrement_sequences: bool
如果‘implicit’主键函数必须单独执行以获取它们的值,如果未使用 RETURNING,则为真。
当在 implicit_returning=False
参数用于 Table
对象时,当前面向 PostgreSQL。
attribute preparer: Type[IdentifierPreparer]
一个用于引用标识符的 IdentifierPreparer
类。
attribute reflection_options: Sequence[str] = ()
表示可以在使用 Table.autoload_with
时作为“反射选项”传递给 Table
对象的关键字参数名称的字符串名称序列。
当在 Oracle dialect 中使用“oracle_resolve_synonyms”时,当前示例为真。
method reset_isolation_level(dbapi_connection: DBAPIConnection) → None
给定一个 DBAPI 连接,将其隔离恢复为默认值。
请注意,这是一种方言级别的方法,作为 Connection
和 Engine
隔离级别功能实现的一部分使用;对于大多数典型用例,应优先使用这些 API。
参见
Connection.get_isolation_level()
- 查看当前级别
Connection.default_isolation_level
- 查看默认级别
Connection.execution_options.isolation_level
- 设置每个 Connection
的隔离级别
create_engine.isolation_level
- 设置每个Engine
的隔离级别
attribute returns_native_bytes: bool
指示 Python 的 bytes()对象是否由驱动程序原生返回 SQL“binary”数据类型。
版本 2.0.11 中的新功能。
attribute sequences_optional: bool
如果为 True,则指示Sequence
构造中的Sequence
参数是否应该表示不生成 CREATE SEQUENCE。仅适用于支持序列的方言。目前仅用于允许在指定 Sequence()用于其他后端的列上使用 PostgreSQL SERIAL。
attribute server_side_cursors: bool
已弃用;指示方言是否应尝试默认使用服务器端游标
attribute server_version_info: Tuple[Any, ...] | None
包含正在使用的 DB 后端的版本号的元组。
此值仅适用于支持的方言,并且通常在与数据库的初始连接期间填充。
method set_connection_execution_options(connection: Connection, opts: CoreExecuteOptionsParameter) → None
为给定连接建立执行选项。
这是由DefaultDialect
实现的,以实现Connection.execution_options.isolation_level
执行选项。方言可以拦截各种执行选项,这些选项可能需要修改特定 DBAPI 连接上的状态。
版本 1.4 中的新功能。
method set_engine_execution_options(engine: Engine, opts: CoreExecuteOptionsParameter) → None
为给定引擎建立执行选项。
这是由DefaultDialect
实现的,用于为给定Engine
创建的新Connection
实例建立事件钩子,然后将为该连接调用Dialect.set_connection_execution_options()
方法。
method set_isolation_level(dbapi_connection: DBAPIConnection, level: Literal['SERIALIZABLE', 'REPEATABLE READ', 'READ COMMITTED', 'READ UNCOMMITTED', 'AUTOCOMMIT']) → None
给定一个 DBAPI 连接,设置其隔离级别。
请注意,这是一个方言级方法,用作Connection
和Engine
隔离级别功能的实现的一部分;这些 API 应该优先用于大多数典型用例。
如果方言还实现了Dialect.get_isolation_level_values()
方法,则给定级别将保证是该序列中的字符串名称之一,并且该方法不需要预期查找失败。
另请参见
Connection.get_isolation_level()
- 查看当前级别
Connection.default_isolation_level
- 查看默认级别
Connection.execution_options.isolation_level
- 设置每个Connection
的隔离级别
create_engine.isolation_level
- 设置每个Engine
的隔离级别
attribute statement_compiler: Type[SQLCompiler]
用于编译 SQL 语句的Compiled
类
attribute supports_alter: bool
如果数据库支持ALTER TABLE
,则为True
- 仅在某些情况下用于生成外键约束
attribute supports_comments: bool
表示方言是否支持对表和列的 DDL 注释。
attribute supports_constraint_comments: bool
表示方言是否支持对约束的 DDL 注释。
attribute supports_default_metavalue: bool
方言支持 INSERT…(col) VALUES (DEFAULT)语法。
大多数数据库都以某种方式支持此功能,例如 SQLite 使用VALUES (NULL)
支持它。 MS SQL Server 也支持该语法,但它是唯一一个包含在内的方言,我们在其中禁用了此功能,因为 MSSQL 不支持 IDENTITY 列的字段,而通常我们喜欢利用该功能。
attribute supports_default_values: bool
方言支持 INSERT… DEFAULT VALUES 语法。
attribute supports_empty_insert: bool
方言支持 INSERT () VALUES (),即没有列的普通 INSERT。
这通常不受支持;“空”插入通常使用“INSERT…DEFAULT VALUES”或“INSERT … (col) VALUES (DEFAULT)”来适用。
attribute supports_identity_columns: bool
目标数据库支持 IDENTITY
attribute supports_multivalues_insert: bool
目标数据库支持带有多个值集的 INSERT…VALUES,即 INSERT INTO table (cols) VALUES (…), (…), (…), …
attribute supports_native_boolean: bool
表示方言是否支持原生布尔值构造。当使用该类型时,这将防止Boolean
生成 CHECK 约束。
attribute supports_native_decimal: bool
表示是否处理和返回十进制对象以获取精度数值类型,或者是否返回浮点数
attribute supports_native_enum: bool
表示方言是否支持原生 ENUM 构造。当以“本地”模式使用该类型时,这将防止Enum
生成 CHECK 约束。
attribute supports_native_uuid: bool
指示 Python 的 UUID()对象是否由驱动程序本地处理以用于 SQL UUID 数据类型。
新版本 2.0 中新增。
attribute supports_sane_multi_rowcount: bool
指示方言在通过 executemany 执行 UPDATE 和 DELETE 语句时是否正确实现了 rowcount。
attribute supports_sane_rowcount: bool
指示方言在执行UPDATE
和DELETE
语句时是否正确实现了 rowcount。
attribute supports_sequences: bool
表示方言是否支持 CREATE SEQUENCE 或类似功能。
attribute supports_server_side_cursors: bool
表示方言是否支持服务器端游标。
attribute supports_simple_order_by_label: bool
目标数据库支持 ORDER BY ,其中指的是 SELECT 中列子句中的标签。
attribute supports_statement_cache: bool = True
表示此方言是否支持缓存。
所有兼容语句缓存的方言都应直接在每个支持的方言类和子类上将此标志设置为 True。SQLAlchemy 在使用语句缓存之前会测试每个方言子类上是否存在此标志。这是为了对尚未完全测试以符合 SQL 语句缓存的旧版或新版方言提供安全性。
新版本 1.4.5 中新增。
另见
SqlAlchemy 2.0 中文文档(四十七)(8)https://developer.aliyun.com/article/1563055