运行时检查 API¶
检查模块提供了 inspect() 函数,该函数提供有关 Core 和 ORM 中各种 SQLAlchemy 对象的运行时信息。
inspect() 函数是 SQLAlchemy 的公共 API 的入口点,用于查看内存中对象的配置和构造。根据传递给 inspect() 的对象类型,返回值将是提供已知接口的相关对象,或者在许多情况下它将返回对象本身。
inspect() 的基本原理有两个。 一是
它取代了了解各种“信息”
getting“函数,例如
Inspector.from_engine() (在 1.4 中已弃用)、
instance_state()、class_mapper() 等。另一个是 inspect() 的返回值
保证遵守记录的 API,从而允许第三方
构建在要构建的 SQLAlchemy 配置之上的工具
以向前兼容的方式。
对象名称 |
描述 |
|---|---|
|
|
-
函数 sqlalchemy.inspect(subject: Any, raiseerr: bool = True) 任意¶
为给定目标生成检查对象。
在某些情况下,返回的值可能是 与给定的对象相同,例如如果Mapper对象。在其他情况下,它将是给定对象的已注册检查类型的实例,例如,如果传递了Engine,则Inspector对象。
参数
subject¶ – 要检查的主题。
raiseerr¶- 当True时,如果给定的主题 不 对应于已知的 SQLAlchemy 检查类型,sqlalchemy.exc.NoInspectionAvailable被提升。 如果为 False,则返回None。
可用的检查目标¶
以下是许多最常见的检查目标的列表。
ClauseElement- 所有 SQL 表达式组件,包括Table、Column作为它们自己的检查对象,这意味着传递给inspect()的任何这些对象都会返回自身。object- ORM 将检查给定的对象是否有映射 - 如果是这样,则返回一个InstanceState,表示对象的映射状态。InstanceState还通过AttributeState接口提供对每个属性状态的访问,以及通过History对象。
另请参阅type(即一个类) - 一个给定的类将被 ORM 检查是否有映射 - 如果是这样,则返回该类的Mapper。
另请参阅
mapped 属性 - 将 mapped 属性传递给inspect(),例如inspect(MyClass.some_attribute),返回QueryableAttributeobject,它是与映射类关联的描述符。此描述符引用MapperProperty,它通常是ColumnProperty的实例 或RelationshipProperty的QueryableAttribute.property属性。AliasedClass- 返回AliasedInsp对象。