运行时检查 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)
,返回QueryableAttribute
object,它是与映射类关联的描述符。此描述符引用MapperProperty
,它通常是ColumnProperty
的实例 或RelationshipProperty
的QueryableAttribute.property
属性。AliasedClass
- 返回AliasedInsp
对象。