SqlAlchemy 2.0 中文文档(三十九)(4)

简介: SqlAlchemy 2.0 中文文档(三十九)

SqlAlchemy 2.0 中文文档(三十九)(3)https://developer.aliyun.com/article/1562611


使用检查员进行细粒度反射

也提供了低级接口,它提供了一个与后端无关的系统,用于从给定数据库加载模式、表、列和约束描述的列表。这被称为“检查员”:

from sqlalchemy import create_engine
from sqlalchemy import inspect
engine = create_engine("...")
insp = inspect(engine)
print(insp.get_table_names())
对象名称 描述
检查员 执行数据库模式检查。
ReflectedCheckConstraint 表示反射元素的字典,对应于CheckConstraint
ReflectedColumn 表示反射元素的字典,对应于Column对象。
ReflectedComputed 表示计算列的反射元素,对应于Computed构造。
ReflectedForeignKeyConstraint 表示反射元素的字典,对应于ForeignKeyConstraint
ReflectedIdentity 表示列的反射身份结构,对应于Identity构造。
ReflectedIndex 表示反射元素的字典,对应于Index
反射主键约束 表示对应于PrimaryKeyConstraint的反射元素的字典。
反射表注释 表示对应于Table.comment属性的反射注释的字典。
反射唯一约束 表示对应于UniqueConstraint的反射元素的字典。
class sqlalchemy.engine.reflection.Inspector

执行数据库模式检查。

Inspector 充当Dialect的反射方法的代理,提供一致的接口以及对先前获取的元数据的缓存支持。

通常通过inspect()函数创建Inspector对象,可以传递一个Engine或一个Connection

from sqlalchemy import inspect, create_engine
engine = create_engine('...')
insp = inspect(engine)

在上述情况下,与引擎相关联的Dialect可能选择返回一个提供了特定于该方言目标数据库的附加方法的Inspector子类。

成员

init(), bind, clear_cache(), default_schema_name,  dialect, engine, from_engine(), get_check_constraints(), get_columns(),  get_foreign_keys(), get_indexes(), get_materialized_view_names(),  get_multi_check_constraints(), get_multi_columns(),  get_multi_foreign_keys(), get_multi_indexes(),  get_multi_pk_constraint(), get_multi_table_comment(),  get_multi_table_options(), get_multi_unique_constraints(),  get_pk_constraint(), get_schema_names(), get_sequence_names(),  get_sorted_table_and_fkc_names(), get_table_comment(),  get_table_names(), get_table_options(), get_temp_table_names(),  get_temp_view_names(), get_unique_constraints(), get_view_definition(),  get_view_names(), has_index(), has_schema(), has_sequence(),  has_table(), info_cache, reflect_table(),  sort_tables_on_foreign_key_dependency()

类签名

sqlalchemy.engine.reflection.Inspectorsqlalchemy.inspection.Inspectable

method __init__(bind: Engine | Connection)

初始化一个新的Inspector

自版本 1.4 弃用:Inspector 上的 init() 方法已弃用,并将在将来的版本中移除。请使用 EngineConnection 上的 inspect() 函数以获取 Inspector

参数:

bind – 一个Connection,通常是EngineConnection的实例。

对于特定于方言的 Inspector 实例,请参阅 Inspector.from_engine()

attribute bind: Engine | Connection
method clear_cache() → None

重置此Inspector的缓存。

当检查方法有缓存数据时,在下次调用以获取新数据时会发出 SQL 查询。

从版本 2.0 开始。

attribute default_schema_name

返回当前引擎的数据库用户的方言提供的默认模式名称。

例如,对于 PostgreSQL 通常是 public,对于 SQL Server 是 dbo

attribute dialect: Dialect
attribute engine: Engine
classmethod from_engine(bind: Engine) → Inspector

从给定的引擎或连接构造一个新的特定于方言的 Inspector 对象。

自版本 1.4 弃用:Inspector 上的 from_engine() 方法已弃用,并将在将来的版本中移除。请使用 EngineConnection 上的 inspect() 函数以获取 Inspector

参数:

bind – 一个Connection或者Engine

该方法与直接构造函数调用Inspector不同,在此,Dialect有机会提供特定于方言的Inspector实例,该实例可能提供附加方法。

请参阅Inspector的示例。

method get_check_constraints(table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedCheckConstraint]

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

给定字符串table_name和可选字符串模式,将检查约束信息作为ReflectedCheckConstraint列表返回。

参数:

  • table_name – 表的字符串名称。对于特殊引用,请使用quoted_name
  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。对于特殊引用,请使用quoted_name
  • **kw – 要传递给特定方言实现的附加关键字参数。有关更多信息,请参阅使用中的方言的文档。

返回:

字典列表,每个表示检查约束的定义。

另请参阅

Inspector.get_multi_check_constraints()

method get_columns(table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedColumn]

返回table_name中的列信息。

给定字符串table_name和可选字符串schema,将列信息作为ReflectedColumn列表返回。

参数:

  • table_name – 表的字符串名称。对于特殊引用,请使用quoted_name
  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。对于特殊引用,请使用quoted_name
  • **kw – 要传递给特定方言实现的附加关键字参数。有关更多信息,请参阅使用中的方言的文档。

返回:

字典列表,每个表示数据库列的定义。

另请参阅

Inspector.get_multi_columns()

method get_foreign_keys(table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedForeignKeyConstraint]

返回table_name中的外键信息。

给定字符串table_name,以及可选的字符串模式,将外键信息作为ReflectedForeignKeyConstraint的列表返回。

参数:

  • table_name – 表格的字符串名称。对于特殊引用,请使用quoted_name
  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。对于特殊引用,请使用quoted_name
  • **kw – 附加的关键字参数,传递给特定方言的实现。有关更多信息,请参阅正在使用的方言的文档。

返回:

一个字典列表,每个字典表示一个外键定义。

另请参阅

Inspector.get_multi_foreign_keys()

method get_indexes(table_name: str, schema: str | None = None, **kw: Any) → List[ReflectedIndex]

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

给定字符串table_name和可选的字符串模式,将索引信息作为ReflectedIndex的列表返回。

参数:

  • table_name – 表格的字符串名称。对于特殊引用,请使用quoted_name
  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。对于特殊引用,请使用quoted_name
  • **kw – 附加的关键字参数,传递给特定方言的实现。有关更多信息,请参阅正在使用的方言的文档。

返回:

一个字典列表,每个字典表示一个索引的定义。

另请参阅

Inspector.get_multi_indexes()

method get_materialized_view_names(schema: str | None = None, **kw: Any) → List[str]

返回模式中的所有物化视图名称。

参数:

  • schema – 可选,从非默认模式中检索名称。对于特殊引用,请使用quoted_name
  • **kw – 附加的关键字参数,传递给特定方言的实现。有关更多信息,请参阅正在使用的方言的文档。

版本 2.0 中的新功能。

另请参阅

Inspector.get_view_names()

method get_multi_check_constraints(schema: str | None = None, filter_names: Sequence[str] | None = None, kind: ObjectKind = ObjectKind.TABLE, scope: ObjectScope = ObjectScope.DEFAULT, **kw: Any) → Dict[TableKey, List[ReflectedCheckConstraint]]

返回给定模式中所有表格中检查约束的信息。

可以通过将要使用的名称传递给filter_names来过滤表格。

对于每个表,值是ReflectedCheckConstraint的列表。

参数:

  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。对于特殊引用,请使用quoted_name
  • filter_names – 可选地仅返回此处列出的对象的信息。
  • kind – 指定要反映的对象类型的ObjectKind。默认为ObjectKind.TABLE
  • scope – 指定应反映默认、临时或任何表的约束的ObjectScope。默认为ObjectScope.DEFAULT
  • **kw – 传递给特定方言实现的额外关键字参数。有关更多信息,请参阅正在使用的方言的文档。

返回:

一个字典,其中键是两元组模式、表名,值是字典列表,每个表示检查约束的定义。如果未提供模式,则模式为None

新版本 2.0 中新增。

另请参阅

Inspector.get_check_constraints()

method get_multi_columns(schema: str | None = None, filter_names: Sequence[str] | None = None, kind: ObjectKind = ObjectKind.TABLE, scope: ObjectScope = ObjectScope.DEFAULT, **kw: Any) → Dict[TableKey, List[ReflectedColumn]]

返回给定模式中所有对象中列的信息。

可通过将要用于filter_names的名称传递来过滤对象。

对于每个表,值是ReflectedColumn的列表。

参数:

  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。对于特殊引用,请使用quoted_name
  • filter_names – 可选地仅返回此处列出的对象的信息。
  • kind – 指定要反映的对象类型的ObjectKind。默认为ObjectKind.TABLE
  • scope – 指定应反映默认、临时或任何表的列的ObjectScope。默认为ObjectScope.DEFAULT
  • **kw – 传递给特定方言实现的额外关键字参数。有关更多信息,请参阅正在使用的方言的文档。

返回:

一个字典,其中键是两元组模式、表名,值是字典列表,每个表示数据库列的定义。如果未提供模式,则模式为None

新版本 2.0 中新增。

另请参阅

Inspector.get_columns()

method get_multi_foreign_keys(schema: str | None = None, filter_names: Sequence[str] | None = None, kind: ObjectKind = ObjectKind.TABLE, scope: ObjectScope = ObjectScope.DEFAULT, **kw: Any) → Dict[TableKey, List[ReflectedForeignKeyConstraint]]

返回给定模式中所有表中外键的信息。

可通过将要用于filter_names的名称传递来过滤表。

对于每个表,值是一个 ReflectedForeignKeyConstraint 列表。

参数:

  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。要进行特殊引用,请使用 quoted_name
  • filter_names – 可选择仅返回此处列出的对象的信息。
  • kind – 一个指定要反射的对象类型的 ObjectKind。默认为 ObjectKind.TABLE
  • scope – 一个指定要反射的默认、临时或任何表的外键的 ObjectScope。默认为 ObjectScope.DEFAULT
  • **kw – 传递给特定方言实现的额外关键字参数。有关更多信息,请参阅正在使用的方言的文档。

返回:

一个字典,其中键是二元组模式、表名,值是字典列表,每个表示外键定义。如果未提供模式,则模式为 None

新版本 2.0 中新增。

另请参阅

Inspector.get_foreign_keys()

method get_multi_indexes(schema: str | None = None, filter_names: Sequence[str] | None = None, kind: ObjectKind = ObjectKind.TABLE, scope: ObjectScope = ObjectScope.DEFAULT, **kw: Any) → Dict[TableKey, List[ReflectedIndex]]

返回给定模式中所有对象中的索引的信息。

可通过将名称传递给 filter_names 来过滤对象。

对于每个表,值是一个 ReflectedIndex 列表。

参数:

  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。要进行特殊引用,请使用 quoted_name
  • filter_names – 可选择仅返回此处列出的对象的信息。
  • kind – 一个指定要反射的对象类型的 ObjectKind。默认为 ObjectKind.TABLE
  • scope – 一个指定要反射的默认、临时或任何表的索引的 ObjectScope。默认为 ObjectScope.DEFAULT
  • **kw – 传递给特定方言实现的额外关键字参数。有关更多信息,请参阅正在使用的方言的文档。

返回:

一个字典,其中键是二元组模式、表名,值是字典列表,每个表示索引的定义。如果未提供模式,则模式为 None

新版本 2.0 中新增。

另请参阅

Inspector.get_indexes()

method get_multi_pk_constraint(schema: str | None = None, filter_names: Sequence[str] | None = None, kind: ObjectKind = ObjectKind.TABLE, scope: ObjectScope = ObjectScope.DEFAULT, **kw: Any) → Dict[TableKey, ReflectedPrimaryKeyConstraint]

返回给定模式中所有表中主键约束的信息。

可通过将名称传递给 filter_names 来过滤表。

对于每个表,值是 ReflectedPrimaryKeyConstraint

参数:

  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。要进行特殊引用,请使用 quoted_name
  • filter_names – 可选地仅返回此处列出的对象的信息。
  • kind – 一个 ObjectKind,指定要反映的对象类型。默认为 ObjectKind.TABLE
  • scope – 一个 ObjectScope,指定应反映默认、临时或任何表的主键。默认为 ObjectScope.DEFAULT
  • **kw – 传递给方言特定实现的额外关键字参数。有关更多信息,请参阅所使用的方言的文档。

返回:

一个字典,其中键是二元组 schema,table-name,值是字典,每个表示主键约束的定义。如果未提供模式,则模式为 None

2.0 版新功能。

另请参阅

Inspector.get_pk_constraint()

method get_multi_table_comment(schema: str | None = None, filter_names: Sequence[str] | None = None, kind: ObjectKind = ObjectKind.TABLE, scope: ObjectScope = ObjectScope.DEFAULT, **kw: Any) → Dict[TableKey, ReflectedTableComment]

返回给定模式中所有对象的表注释信息。

可通过将要使用的名称传递给 filter_names 进行过滤对象。

对于每个表,值是 ReflectedTableComment

对于不支持注释的方言,引发 NotImplementedError 异常。

参数:

  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。要进行特殊引用,请使用 quoted_name
  • filter_names – 可选地仅返回此处列出的对象的信息。
  • kind – 一个 ObjectKind,指定要反映的对象类型。默认为 ObjectKind.TABLE
  • scope – 一个 ObjectScope,指定应反映默认、临时或任何表的注释。默认为 ObjectScope.DEFAULT
  • **kw – 传递给方言特定实现的额外关键字参数。有关更多信息,请参阅所使用的方言的文档。

返回:

一个字典,其中键是二元组 schema,table-name,值是字典,表示表注释。如果未提供模式,则模式为 None

2.0 版新功能。

另请参阅

Inspector.get_table_comment()

method get_multi_table_options(schema: str | None = None, filter_names: Sequence[str] | None = None, kind: ObjectKind = ObjectKind.TABLE, scope: ObjectScope = ObjectScope.DEFAULT, **kw: Any) → Dict[TableKey, Dict[str, Any]]

返回指定模式中的表创建时指定的选项的字典。

表格可以通过将要使用的名称传递给 filter_names 进行过滤。

目前包括一些适用于 MySQL 和 Oracle 表的选项。

参数:

  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。对于特殊引用,请使用quoted_name
  • filter_names – 可选择仅返回此处列出的对象的信息。
  • kind – 一个ObjectKind,指定要反映的对象类型。默认为ObjectKind.TABLE
  • scope – 一个ObjectScope,指定应该反映哪些选项的范围,默认为ObjectScope.DEFAULT
  • **kw – 传递给方言特定实现的附加关键字参数。有关更多信息,请参阅所使用方言的文档。

返回值:

一个字典,其中键是两元组 schema,table-name,值是具有表选项的字典。每个字典中返回的键取决于所使用的方言。每个键都以方言名称为前缀。如果未提供模式,则模式为None

新版本功能 2.0。

另请参阅

Inspector.get_table_options()

method get_multi_unique_constraints(schema: str | None = None, filter_names: Sequence[str] | None = None, kind: ObjectKind = ObjectKind.TABLE, scope: ObjectScope = ObjectScope.DEFAULT, **kw: Any) → Dict[TableKey, List[ReflectedUniqueConstraint]]

返回有关给定模式中所有表的唯一约束的信息。

表格可以通过将要使用的名称传递给filter_names来进行过滤。

对于每个表,值是一个ReflectedUniqueConstraint的列表。

参数:

  • schema – 字符串模式名称;如果省略,则使用数据库连接的默认模式。对于特殊引用,请使用quoted_name
  • filter_names – 可选择仅返回此处列出的对象的信息。
  • kind – 一个ObjectKind,指定要反映的对象类型。默认为ObjectKind.TABLE
  • scope – 一个ObjectScope,指定应该反映哪些约束的范围,默认为ObjectScope.DEFAULT
  • **kw – 传递给方言特定实现的附加关键字参数。有关更多信息,请参阅所使用方言的文档。

返回值:

一个字典,其中键是两元组 schema,table-name,值是表示唯一约束定义的字典列表。如果未提供模式,则模式为None

新版本功能 2.0。

另请参阅

Inspector.get_unique_constraints()

method get_pk_constraint(table_name: str, schema: str | None = None, **kw: Any) → ReflectedPrimaryKeyConstraint

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

给定字符串table_name,以及一个可选的字符串模式,返回主键信息作为ReflectedPrimaryKeyConstraint

参数:

  • table_name - 表的字符串名称。要进行特殊引用,请使用quoted_name
  • schema - 字符串模式名称;如果省略,则使用数据库连接的默认模式。要进行特殊引用,请使用quoted_name
  • **kw - 传递给特定方言实现的附加关键字参数。有关更多信息,请参阅正在使用的方言的文档。

返回:

一个表示主键约束定义的字典。

另请参阅

Inspector.get_multi_pk_constraint()

method get_schema_names(**kw: Any) → List[str]

返回所有模式名称。

参数:

**kw - 传递给特定方言实现的附加关键字参数。有关更多信息,请参阅正在使用的方言的文档。

method get_sequence_names(schema: str | None = None, **kw: Any) → List[str]

返回模式中所有序列名称。

参数:

  • schema - 可选,从非默认模式中检索名称。要进行特殊引用,请使用quoted_name
  • **kw - 传递给特定方言实现的附加关键字参数。有关更多信息,请参阅正在使用的方言的文档。
method get_sorted_table_and_fkc_names(schema: str | None = None, **kw: Any) → List[Tuple[str | None, List[Tuple[str, str | None]]]]

返回特定模式中所引用的表和外键约束名的依赖排序。

这将产生 2 元组(tablename, [(tname, fkname), (tname, fkname), ...]),其中包含按 CREATE 顺序分组的表名与未被检测为属于循环的外键约束名。最后一个元素将是(None, [(tname, fkname), (tname, fkname), ..]),其中包含剩余的外键约束名,这些名字需要在事后单独进行 CREATE 步骤,基于表之间的依赖关系。

参数:

  • schema - 要查询的模式名称,如果不是默认模式。
  • **kw - 传递给特定方言实现的附加关键字参数。有关更多信息,请参阅正在使用的方言的文档。

另请参阅

Inspector.get_table_names()

sort_tables_and_constraints() - 与已给定的MetaData类似的方法。

method get_table_comment(table_name: str, schema: str | None = None, **kw: Any) → ReflectedTableComment

返回关于table_name的表注释的信息。

给定字符串 table_name 和可选字符串 schema,将表注释信息返回为 ReflectedTableComment

对于不支持注释的方言,引发 NotImplementedError


SqlAlchemy 2.0 中文文档(三十九)(5)https://developer.aliyun.com/article/1562626

相关文章
|
2月前
|
关系型数据库 数据库连接 数据库
SqlAlchemy 2.0 中文文档(三十九)(1)
SqlAlchemy 2.0 中文文档(三十九)
28 0
|
2月前
|
SQL 存储 关系型数据库
SqlAlchemy 2.0 中文文档(三十四)(4)
SqlAlchemy 2.0 中文文档(三十四)
33 1
|
2月前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(三十四)(5)
SqlAlchemy 2.0 中文文档(三十四)
23 0
|
2月前
|
关系型数据库 数据库连接 数据库
SqlAlchemy 2.0 中文文档(三十九)(2)
SqlAlchemy 2.0 中文文档(三十九)
19 0
|
2月前
|
关系型数据库 MySQL 数据库
SqlAlchemy 2.0 中文文档(三十九)(3)
SqlAlchemy 2.0 中文文档(三十九)
14 0
|
2月前
|
关系型数据库 MySQL 数据库
SqlAlchemy 2.0 中文文档(三十九)(5)
SqlAlchemy 2.0 中文文档(三十九)
18 0
|
2月前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(三十四)(3)
SqlAlchemy 2.0 中文文档(三十四)
29 0
|
2月前
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(三十四)(2)
SqlAlchemy 2.0 中文文档(三十四)
20 0
|
2月前
|
SQL 存储 关系型数据库
SqlAlchemy 2.0 中文文档(三十四)(1)
SqlAlchemy 2.0 中文文档(三十四)
24 0
|
2月前
|
SQL 关系型数据库 数据库连接
SqlAlchemy 2.0 中文文档(四十五)(2)
SqlAlchemy 2.0 中文文档(四十五)
33 0