运行时检查 API
检查模块提供 inspect()
函数,它提供有关各种SQLAlchemy对象的运行时信息,包括核心和ORM中的这些对象。
这个 inspect()
函数是SQLAlchemy公共API的入口点,用于查看内存中对象的配置和构造。取决于传递给的对象的类型 inspect()
返回值要么是提供已知接口的相关对象,要么在许多情况下返回对象本身。
其基本原理是 inspect()
是双重的。其一是它不再需要了解SQLAlChemy中的各种“信息获取”函数,例如 Inspector.from_engine()
(1.4中已弃用), instance_state()
, class_mapper()
,以及其他。另一种是,它的返回值 inspect()
保证遵守记录在案的API,从而允许以向前兼容的方式构建构建在SQLAlChemy配置之上的第三方工具。
Object Name | Description |
---|---|
inspect(subject[, raiseerr]) | 为给定目标生成检验对象。 |
- function sqlalchemy.inspect(subject, raiseerr=True)
下面列出了许多最常见的检查目标。
Connectable
(即Engine
,Connection
-返回一个Inspector
对象。ClauseElement
-所有SQL表达式组件,包括Table
,Column
,作为自己的检查对象,这意味着这些对象中的任何一个传递给inspect()
自己回来。object
-ORM将检查给定对象的映射-如果是,则InstanceState
返回表示对象的映射状态的。这个InstanceState
还可以通过AttributeState
接口以及通过History
对象。type
(即类)-ORM将检查给定类的映射-如果是,则Mapper
因为该类被返回。映射属性-将映射属性传递到
inspect()
,如inspect(MyClass.some_attribute)
返回一个QueryableAttribute
对象,即 descriptor 与映射类关联。此描述符引用MapperProperty
,这通常是ColumnProperty
或RelationshipProperty
通过它的QueryableAttribute.property
属性。AliasedClass
-返回一个AliasedInsp
对象。