SqlAlchemy 2.0 中文文档(十)(4)https://developer.aliyun.com/article/1562918
参数:
class_
– 要映射的类。在使用声明式时,此参数将自动传递为声明的类本身。local_table
– 要映射到的Table
或其他FromClause
(即可选择的)。如果此映射器使用单表继承从另一个映射器继承,则可以为None
。在使用声明式时,此参数由扩展自动传递,根据通过DeclarativeBase.__table__
属性配置的内容或通过DeclarativeBase.__tablename__
属性的结果产生的Table
。polymorphic_abstract
–
表示此类将在多态层次结构中映射,但不会直接实例化。该类通常被映射,只是在继承层次结构中没有对Mapper.polymorphic_identity
的要求。但是,该类必须是使用基类中的Mapper.polymorphic_on
的多态继承方案的一部分。
2.0 版中的新功能。
另请参见
使用 polymorphic_abstract 构建更深层次的层次结构always_refresh
– 如果为 True,则为此映射类的所有查询操作将覆盖已存在于会话中的对象实例中的所有数据,用从数据库加载的任何信息擦除任何内存中的更改。强烈不建议使用此标志;作为替代方案,请参见方法Query.populate_existing()
。allow_partial_pks
– 默认为 True。表示具有一些 NULL 值的复合主键应被视为可能存在于数据库中。这会影响映射器是否将传入的行分配给现有标识,以及Session.merge()
是否首先检查数据库中特定主键值。例如,如果已映射到 OUTER JOIN,则可能会出现“部分主键”。batch
– 默认为True
,表示可以将多个实体的保存操作一起批处理以提高效率。将其设置为 False 表示在保存下一个实例之前将完全保存一个实例。这在极为罕见的情况下使用,即MapperEvents
监听器需要在单个行持久性操作之间被调用的情况下。column_prefix
–
一个字符串,当将Column
对象自动分配为映射类的属性时,将会在映射属性名称之前添加。不影响在Mapper.properties
字典中显式映射的Column
对象。
此参数通常与将Table
对象保持分开的命令式映射一起使用。假设user_table
Table
对象具有名为user_id
、user_name
和password
的列:
class User(Base): __table__ = user_table __mapper_args__ = {'column_prefix':'_'}
- 上述映射将
user_id
、user_name
和password
列分配给映射的User
类上名为_user_id
、_user_name
和_password
的属性。Mapper.column_prefix
参数在现代用法中不常见。对于处理反射表,更灵活的自动命名方案是拦截反射时的Column
对象;请参阅从反射表自动化列命名方案一节中关于此用法模式的注释。 concrete
–
如果为 True,则表示此映射器应使用具体表继承与其父映射器。
请参阅具体表继承中的示例。confirm_deleted_rows
– 默认为 True;当基于特定主键发生 DELETE 时,如果匹配的行数不等于预期的行数,则会发出警告。可以将此参数设置为 False,以处理数据库 ON DELETE CASCADE 规则可能自动删除某些行的情况。警告可能在将来的版本中更改为异常。eager_defaults
–
如果为 True,则 ORM 将在 INSERT 或 UPDATE 后立即获取服务器生成的默认值的值,而不是将其保留为过期以在下次访问时获取。这可以用于需要在 flush 完成之前立即获取服务器生成值的事件方案。
值的获取可以通过在INSERT
或UPDATE
语句中与RETURNING
一起使用,或者在INSERT
或UPDATE
之后添加额外的SELECT
语句,如果后端不支持RETURNING
。
使用RETURNING
对于 SQLAlchemy 可以利用 insertmanyvalues 特别适用于INSERT
语句,而使用额外的SELECT
相对性能较差,增加了额外的 SQL 往返,如果这些新属性不被访问,则这些往返是不必要的。
因此,Mapper.eager_defaults
默认为字符串值"auto"
,表示应该使用RETURNING
获取 INSERT 的服务器默认值,如果后端数据库支持的话,并且如果正在使用的方言支持“insertmanyreturning”作为 INSERT 语句。如果后端数据库不支持RETURNING
或者“insertmanyreturning”不可用,则不会获取服务器默认值。
从版本 2.0.0rc1 开始更改:为Mapper.eager_defaults
添加了“auto”选项
另请参阅
获取服务器生成的默认值
从版本 2.0.0 开始更改:RETURNING
现在可以同时使用插入多行的 insertmanyvalues 功能,这使得支持的后端上的Mapper.eager_defaults
特性性能非常高。exclude_properties
–
排除映射的字符串列名列表或集合。
另请参见
映射表列的子集include_properties
–
要映射的字符串列名的包含列表或集合。
另请参见
映射表列的子集inherits
–
映射类或其中一个的对应Mapper
,指示此Mapper
应从中继承的超类。此处映射的类必须是另一个映射器类的子类。在使用声明式时,此参数会自动传递,因为已声明类的自然类层次结构。
另请参见
映射类继承层次结构inherit_condition
– 对于联接表继承,定义两个表如何连接的 SQL 表达式;默认为两个表之间的自然连接。inherit_foreign_keys
– 当使用inherit_condition
并且存在的列缺少ForeignKey
配置时,可以使用此参数来指定哪些列是“外键”。在大多数情况下可以保持为None
。legacy_is_orphan
–
布尔值,默认为False
。当为True
时,指定对由此映射器映射的对象应用“传统”孤立考虑,这意味着仅当它从指向此映射器的所有父级中解除关联时,即将删除孤立级联的挂起(即,非持久性)对象才会自动从所拥有的Session
中清除。新的默认行为是,当对象与指定了delete-orphan
级联的任何父级之一解除关联时,对象会自动从其父级中清除。此行为与持久性对象的行为更一致,并允许行为在更多的场景中独立于孤立对象是否已刷新。
有关此更改的详细信息和示例,请参见将“待处理”对象视为“孤立”对象的考虑更为积极。non_primary
–
指定此Mapper
除了“主”映射器之外,也就是用于持久化的映射器。在此创建的Mapper
可用于将类的临时映射到备用可选择的对象上,仅用于加载。
自版本 1.3 起已弃用:mapper.non_primary
参数已弃用,并将在将来的发布版本中删除。非主映射器的功能现在更适合使用AliasedClass
构造,1.3 中也可以作为relationship()
的目标使用。
另请参阅
与别名类的关系 - 新模式,消除了Mapper.non_primary
标志的需要。passive_deletes
-
指示在删除联合表继承实体时外键列的 DELETE 行为。基本映射器默认为False
;对于继承映射器,默认为False
,除非在超类映射器上将值设置为True
。
当为True
时,假定已在将此映射器的表与其超类表链接的外键关系上配置了 ON DELETE CASCADE,以便当工作单元尝试删除实体时,只需为超类表发出 DELETE 语句,而不是为此表发出 DELETE 语句。
当为False
时,将为此映射器的表分别发出 DELETE 语句。如果此表的本地主键属性未加载,则必须发出 SELECT 以验证这些属性;请注意,联合表子类的主键列不是对象整体的“主键”部分。
请注意,True
的值始终强制应用于子类映射器;也就是说,超类无法指定无主动删除而不对所有子类映射器产生影响。
另请参阅
在 ORM 关系中使用外键 ON DELETE 级联 - 描述了与relationship()
一起使用的类似功能。mapper.passive_updates
- 支持联合表继承映射的 ON UPDATE CASCADEpassive_updates
-
指示联合表继承映射中主键列更改时外键列的 UPDATE 行为。默认为True
。
当为 True 时,假定数据库上的外键已配置为 ON UPDATE CASCADE,并且数据库将处理从源列到联合表行上的依赖列的 UPDATE 传播。
当为 False 时,假定数据库不执行参照完整性,并且不会为更新发出自己的 CASCADE 操作。在主键更改期间,工作单元过程将针对依赖列发出 UPDATE 语句。
另请参阅
可变主键 / 更新级联 - 描述与relationship()
一起使用的类似功能的说明mapper.passive_deletes
- 为连接表继承映射器支持 ON DELETE CASCADEpolymorphic_load
–
在继承层次结构中的子类中指定“多态加载”行为(仅适用于连接和单表继承)。有效值为:
- “‘inline’” - 指定此类应该是“with_polymorphic”映射器的一部分,例如,它的列将包含在针对基础的 SELECT 查询中。
- “‘selectin’” - 指定当加载此类的实例时,将发出额外的 SELECT 来检索特定于此子类的列。SELECT 使用 IN 一次性检索多个子类。
- 版本 1.2 中的新功能。
另请参阅
在映射器上配置 with_polymorphic()
使用 selectin_polymorphic() polymorphic_on
–
指定用于确定传入行的目标类的列、属性或 SQL 表达式,当存在继承类时。
可以指定为字符串属性名称,也可以指定为 SQL 表达式,例如Column
或在声明性映射中为mapped_column()
对象。通常期望 SQL 表达式对应于基础映射的最底层映射的Table
中的列:
class Employee(Base): __tablename__ = 'employee' id: Mapped[int] = mapped_column(primary_key=True) discriminator: Mapped[str] = mapped_column(String(50)) __mapper_args__ = { "polymorphic_on":discriminator, "polymorphic_identity":"employee" }
- 它也可以指定为 SQL 表达式,如此示例中我们使用
case()
构造来提供条件方法:
class Employee(Base): __tablename__ = 'employee' id: Mapped[int] = mapped_column(primary_key=True) discriminator: Mapped[str] = mapped_column(String(50)) __mapper_args__ = { "polymorphic_on":case( (discriminator == "EN", "engineer"), (discriminator == "MA", "manager"), else_="employee"), "polymorphic_identity":"employee" }
- 它也可能使用其字符串名称引用任何属性,在使用注释列配置时特别有用:
class Employee(Base): __tablename__ = 'employee' id: Mapped[int] = mapped_column(primary_key=True) discriminator: Mapped[str] __mapper_args__ = { "polymorphic_on": "discriminator", "polymorphic_identity": "employee" }
- 当将
polymorphic_on
设置为引用不存在于本地映射的Table
中的属性或表达式时,但是鉴别器的值应该持久化到数据库中时,鉴别器的值不会自动设置在新实例上;这必须由用户处理,可以通过手动方式或通过事件监听器来处理。建立这样一个监听器的典型方法如下所示:
from sqlalchemy import event from sqlalchemy.orm import object_mapper @event.listens_for(Employee, "init", propagate=True) def set_identity(instance, *arg, **kw): mapper = object_mapper(instance) instance.discriminator = mapper.polymorphic_identity
- 在上述情况下,我们将映射类的
polymorphic_identity
值分配给discriminator
属性,从而将该值持久化到数据库中的discriminator
列中。
警告
目前,只能设置一个鉴别器列,通常在层次结构中的最底层类上。尚不支持“级联”多态列。
参见
映射类继承层次结构 polymorphic_identity
–
指定由Mapper.polymorphic_on
设置引用的列表达式返回的值,用于识别此特定类的值。当接收到行时,与Mapper.polymorphic_on
列表达式对应的值将与此值进行比较,指示应使用哪个子类来重建新对象。
参见
映射类继承层次结构properties
–
将对象属性的字符串名称映射到MapperProperty
实例的字典,这些实例定义了该属性的持久化行为。请注意,在映射到映射Table
的Column
对象时,除非被覆盖,否则会自动将其放置到ColumnProperty
实例中。使用声明时,此参数将根据在声明类体中声明的所有这些MapperProperty
实例自动传递。
参见
属性字典 - 在 ORM 映射类概述中primary_key
–
一组Column
对象,或者是指向Column
的属性名称的字符串名称,这些属性定义了要针对此映射器的可选择单元使用的主键。这通常只是local_table
的主键,但可以在此处进行覆盖。
从版本 2.0.2 开始更改:Mapper.primary_key
参数也可以表示为字符串属性名称。
参见
映射到一组显式主键列 - 背景和示例用法version_id_col
–
用于保持表中行的运行版本 ID 的Column
。这用于检测并发更新或刷新中存在过时数据的存在。方法是检测如果 UPDATE 语句与最后已知的版本 ID 不匹配,则抛出StaleDataError
异常。默认情况下,列必须是Integer
类型,除非version_id_generator
指定了替代版本生成器。
另请参阅
配置版本计数器 - 版本计数和原理的讨论。version_id_generator
–
定义如何生成新版本 ID。默认为None
,表示采用简单的整数计数方案。要提供自定义版本计数方案,请提供一个形如以下的可调用函数:
def generate_version(version): return next_version
- 或者,可以使用服务器端版本控制功能,例如触发器,或者在版本 ID 生成器之外的程序化版本控制方案,通过指定值
False
。请参阅服务器端版本计数器以了解在使用此选项时的重要要点的讨论。
另请参阅
自定义版本计数器/类型
服务器端版本计数器 with_polymorphic
–
一个形如(, )
的元组,表示“多态”加载的默认样式,即一次查询哪些表。是任何指示一次加载的继承类的单个或列表的映射器和/或类。特殊值
'*'
可用于指示应立即加载所有后代类。第二个元组参数指示将用于查询多个类的可选择项。
在现代映射中,Mapper.polymorphic_load
参数可能比使用Mapper.with_polymorphic
更可取,以指示多态加载样式的子类技术。
另请参阅
在映射器上配置with_polymorphic()
method add_properties(dict_of_properties)
将给定的属性字典添加到此映射器中,使用add_property
。
method add_property(key: str, prop: Column[Any] | MapperProperty[Any]) → None
向此映射器添加单个 MapperProperty。
如果尚未配置映射器,则只需将属性添加到发送到构造函数的初始属性字典中。如果此映射器已配置,则立即配置给定的 MapperProperty。
attribute all_orm_descriptors
一个包含与映射类关联的所有InspectionAttr
属性的命名空间。
这些属性在所有情况下都是与映射类或其超类关联的 Python 描述符。
此命名空间包括映射到类的属性以及由扩展模块声明的属性。它包括任何从InspectionAttr
继承的 Python 描述符类型。这包括QueryableAttribute
,以及扩展类型,如hybrid_property
、hybrid_method
和AssociationProxy
。
为了区分映射属性和扩展属性,属性InspectionAttr.extension_type
将引用一个常量,用于区分不同的扩展类型。
属性的排序基于以下规则:
- 从子类到超类按顺序迭代类及其超类(即通过
cls.__mro__
迭代) - 对于每个类,按照它们在
__dict__
中出现的顺序生成属性,但以下步骤除外。在 Python 3.6 及以上版本中,此顺序将与类的构造相同,但有一个例外,即应用程序或映射器后来添加的属性。 - 如果某个属性键也在超类
__dict__
中,那么它将包含在该类的迭代中,而不是它首次出现的类中。
上述过程产生了一种确定性排序,该排序是根据属性被分配给类的顺序确定的。
自版本 1.3.19 更改:确保对Mapper.all_orm_descriptors()
的确定性排序。
当处理QueryableAttribute
时,QueryableAttribute.property
属性引用了MapperProperty
属性,当通过Mapper.attrs
引用映射属性集合时,将得到它。
警告
Mapper.all_orm_descriptors
访问器命名空间是OrderedProperties
的一个实例。这是一个类似字典的对象,包括一小部分命名方法,如OrderedProperties.items()
和OrderedProperties.values()
。当动态访问属性时,建议使用字典访问方案,例如mapper.all_orm_descriptors[somename]
,而不是getattr(mapper.all_orm_descriptors, somename)
,以避免名称冲突。
另请参阅
Mapper.attrs
attribute attrs
该映射器的所有MapperProperty
对象的命名空间。
这是一个根据其键名提供每个属性的对象。例如,具有User.name
属性的User
类的映射器将提供mapper.attrs.name
,这将是代表name
列的ColumnProperty
。命名空间对象还可以进行迭代,这将产生每个MapperProperty
。
Mapper
具有该属性的几个预过滤视图,限制了返回的属性类型,包括synonyms
、column_attrs
、relationships
和composites
。
警告
Mapper.attrs
访问器命名空间是OrderedProperties
的一个实例。这是一个类似字典的对象,包括一小部分命名方法,如OrderedProperties.items()
和OrderedProperties.values()
。当动态访问属性时,建议使用字典访问方案,例如mapper.attrs[somename]
,而不是getattr(mapper.attrs, somename)
,以避免名称冲突。
另请参阅
Mapper.all_orm_descriptors
attribute base_mapper: Mapper[Any]
继承链中最基础的Mapper
。
在非继承场景中,此属性始终为此Mapper
。在继承场景中,它引用继承链中所有其他Mapper
对象的父级Mapper
。
这是在映射器构建期间确定的只读属性。如果直接修改,行为未定义。
attribute c: ReadOnlyColumnCollection[str, Column[Any]]
Mapper.columns
的同义词。
method cascade_iterator(type_: str, state: InstanceState[_O], halt_on: Callable[[InstanceState[Any]], bool] | None = None) → Iterator[Tuple[object, Mapper[Any], InstanceState[Any], _InstanceDict]]
遍历对象图中的每个元素及其映射器,对于符合给定级联规则的所有关系。
参数:
type_
–
级联规则的名称(即"save-update"
,"delete"
等)。
注意
在此处不接受"all"
级联。有关通用对象遍历函数,请参阅如何遍历与给定对象相关的所有对象?。state
– 主要的 InstanceState。子项将根据为此对象的映射器定义的关系进行处理。
返回:
该方法产生单个对象实例。
另请参阅
级联
如何遍历与给定对象相关的所有对象? - 演示了一个通用函数,用于遍历所有对象而不依赖于级联。
attribute class_: Type[_O]
此Mapper
映射到的类。
attribute class_manager: ClassManager[_O]
ClassManager
维护此Mapper
的事件监听器和类绑定描述符。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
attribute column_attrs
返回此Mapper
维护的所有ColumnProperty
属性的命名空间。
另请参阅
Mapper.attrs
- 所有MapperProperty
对象的命名空间。
attribute columns: ReadOnlyColumnCollection[str, Column[Any]]
由此Mapper
维护的Column
或其他标量表达式对象的集合。
该集合的行为与任何Table
对象上的c
属性相同,只是此映射中包含的列,且基于映射中定义的属性名称进行键控,而不一定是Column
本身的key
属性。此外,由column_property()
映射的标量表达式也在此处。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
method common_parent(other: Mapper[Any]) → bool
如果给定的映射器与此映射器共享一个共同的继承父级,则返回 true。
attribute composites
返回此Mapper
维护的所有Composite
属性的命名空间。
另请参阅
Mapper.attrs
- 所有MapperProperty
对象的命名空间。
attribute concrete: bool
如果此Mapper
是具体继承映射器,则表示True
。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
attribute configured: bool = False
如果已配置此Mapper
,则表示True
。
这是在映射器构建期间确定的只读属性。如果直接修改,行为是未定义的。
另请参阅
configure_mappers()
。
attribute entity
检查 API 的一部分。
返回 self.class_。
method get_property(key: str, _configure_mappers: bool = False) → MapperProperty[Any]
返回与给定键关联的 MapperProperty。
method get_property_by_column(column: ColumnElement[_T]) → MapperProperty[_T]
给定Column
对象,返回映射到此列的MapperProperty
。
method identity_key_from_instance(instance: _O) → _IdentityKeyType[_O]
根据其主键属性返回给定实例的标识键。
如果实例的状态已过期,则调用此方法将导致数据库检查以查看对象是否已被删除。如果行不再存在,则引发ObjectDeletedError
。
此值通常也在实例状态下以属性名称键的形式找到。
method identity_key_from_primary_key(primary_key: Tuple[Any, ...], identity_token: Any | None = None) → _IdentityKeyType[_O]
返回一个用于在标识映射中存储/检索项目的标识映射键。
参数:
primary_key - 表示标识符的值列表。
method identity_key_from_row(row: Row[Any] | RowMapping | None, identity_token: Any | None = None, adapter: ORMAdapter | None = None) → _IdentityKeyType[_O]
返回用于在标识映射中存储/检索项目的标识映射键。
参数:
行 -
从选择了 ORM 映射的主键列的结果集生成的Row
或RowMapping
。
从版本 2.0 开始:Row
或RowMapping
被接受作为“row”参数
attribute inherits: Mapper[Any] | None
引用此Mapper
继承自的Mapper
(如果有)。
attribute is_mapper = True
检查 API 的一部分。
method is_sibling(other: Mapper[Any]) → bool
如果另一个映射器是此映射器的继承兄弟,则返回 true。共同的父级但不同的分支
method isa(other: Mapper[Any]) → bool
如果此映射器从给定的映射器继承,则返回 True。
attribute iterate_properties
返回所有 MapperProperty 对象的迭代器。
attribute local_table: FromClause
此Mapper
所引用的直接FromClause
。
通常是Table
的一个实例,可以是任何FromClause
。
“本地”表是Mapper
直接负责管理的可选择的表,从属性访问和 flush 的角度来看。对于非继承映射器,Mapper.local_table
将与Mapper.persist_selectable
相同。对于继承映射器,Mapper.local_table
指的是包含该Mapper
正在加载/持久化的列的特定部分,例如加入中的特定Table
。
另请参阅
Mapper.persist_selectable
。
Mapper.selectable
.
attribute mapped_table
自版本 1.3 起已弃用:使用 .persist_selectable
attribute mapper
是检查 API 的一部分。
返回自身。
attribute non_primary: bool
如果此Mapper
是“非主”映射器,例如仅用于选择行而不用于持久化管理,则表示为 True
。
这是在映射器构造期间确定的只读属性。如果直接修改,则行为未定义。
attribute persist_selectable: FromClause
此Mapper
映射到的FromClause
。
通常是Table
的一个实例,可以是任何FromClause
。
Mapper.persist_selectable
类似于Mapper.local_table
,但表示继承方案中整体表示继承类层次结构的FromClause
。
:attr..Mapper.persist_selectable
也与Mapper.selectable
属性分开,后者可能是用于选择列的替代子查询。:attr..Mapper.persist_selectable
针对的是在持久化操作中将被写入的列。
另请参阅
Mapper.selectable
。
Mapper.local_table
。
attribute polymorphic_identity: Any | None
表示一个标识符,该标识符在结果行加载期间与Mapper.polymorphic_on
列匹配。
仅在继承时使用,此对象可以是与由Mapper.polymorphic_on
表示的列的类型可比较的任何类型。
这是在映射器构造期间确定的只读属性。如果直接修改,则行为未定义。
method polymorphic_iterator() → Iterator[Mapper[Any]]
遍历包括此映射器和所有后代映射器在内的集合。
这不仅包括直接继承的映射器,还包括所有它们的继承映射器。
要遍历整个层次结构,请使用mapper.base_mapper.polymorphic_iterator()
。
attribute polymorphic_map: Dict[Any, Mapper[Any]]
在继承场景中,将“多态身份”标识符映射到Mapper
实例。
标识符可以是与Mapper.polymorphic_on
所表示的列的类型可比较的任何类型。
映射器的继承链都将引用相同的多态映射对象。该对象用于将传入的结果行与目标映射器相关联。
这是在映射器构造期间确定的只读属性。如果直接修改,则行为未定义。
attribute polymorphic_on: KeyedColumnElement[Any] | None
Mapper
的polymorphic_on
参数指定的Column
或 SQL 表达式,在继承场景中。
此属性通常是一个Column
实例,但也可能是一个表达式,例如从cast()
派生的表达式。
这是在映射器构造期间确定的只读属性。如果直接修改,则行为未定义。
attribute primary_key: Tuple[Column[Any], ...]
包含作为此Mapper
在表映射的‘主键’的一部分的Column
对象的集合的可迭代对象,从此Mapper
的角度来看。
这个列表与Mapper.persist_selectable
中的可选择项相对。在继承映射器的情况下,一些列可能由超类映射器管理。例如,在Join
的情况下,主键由Join
引用的所有表的主键列确定。
此列表也不一定与与基础表关联的主键列集合相同;Mapper
具有可以覆盖Mapper
认为是主键列的primary_key
参数。
这是一个只读属性,在映射器构造期间确定。如果直接修改,行为是未定义的。
method primary_key_from_instance(instance: _O) → Tuple[Any, ...]
返回给定实例的主键值列表。
如果实例的状态已过期,则调用此方法将导致数据库检查以查看对象是否已被删除。如果行不再存在,则会引发ObjectDeletedError
。
method primary_mapper() → Mapper[Any]
返回与此映射器的类键(类)对应的主映射器。
attribute relationships
由此Mapper
维护的所有Relationship
属性的命名空间。
警告
Mapper.relationships
访问器命名空间是OrderedProperties
的实例。这是一个类似于字典的对象,其中包含少量命名方法,例如OrderedProperties.items()
和OrderedProperties.values()
。在动态访问属性时,应优先使用字典访问方案,例如mapper.relationships[somename]
而不是getattr(mapper.relationships, somename)
,以避免名称冲突。
另请参阅
Mapper.attrs
- 所有MapperProperty
对象的命名空间。
attribute selectable
默认情况下,此Mapper
从中选择的FromClause
构造。
通常情况下,这等同于persist_selectable
,除非使用了with_polymorphic
功能,在这种情况下,将返回完整的“多态”可选择项。
attribute self_and_descendants
包括此映射器和所有后代映射器的集合。
这不仅包括直接继承的映射器,还包括所有它们继承的映射器。
attribute single: bool
如果此 Mapper
是单表继承映射器,则表示 True
。
如果设置了此标志,Mapper.local_table
将为 None
。
这是在映射器构建期间确定的只读属性。如果直接修改,行为未定义。
attribute synonyms
返回此 Mapper
维护的所有 Synonym
属性的命名空间。
另请参阅
Mapper.attrs
- 所有 MapperProperty
对象的命名空间。
attribute tables: Sequence[TableClause]
包含此 Mapper
意识到的所有 Table
或 TableClause
对象的序列。
如果映射器被映射到一个 Join
或者代表 Select
的 Alias
,构成完整结构的各个 Table
对象将在这里表示。
这是在映射器构建期间确定的只读属性。如果直接修改,行为未定义。
attribute validators: util.immutabledict[str, Tuple[str, Dict[str, Any]]]
一个不可变字典,其中属性已使用 validates()
装饰器装饰。
字典包含字符串属性名称作为键,映射到实际验证方法。
attribute with_polymorphic_mappers
默认“多态”查询中包含的 Mapper
对象列表。
class sqlalchemy.orm.MappedAsDataclass
混合类用于指示映射此类时,还将其转换为数据类。
另请参阅
声明性数据类映射 - 完整的 SQLAlchemy 本地数据类映射背景
版本 2.0 中的新功能。
class sqlalchemy.orm.MappedClassProtocol
表示 SQLAlchemy 映射类的协议。
协议对类的类型是通用的,使用 MappedClassProtocol[Any]
来允许任何映射类。
类签名
类 sqlalchemy.orm.MappedClassProtocol
(typing_extensions.Protocol
)