SqlAlchemy 2.0 中文文档(十)(5)

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

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_iduser_namepassword 的列:
class User(Base):
    __table__ = user_table
    __mapper_args__ = {'column_prefix':'_'}
  • 上述映射将 user_iduser_namepassword 列分配给映射的 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 完成之前立即获取服务器生成值的事件方案。
    值的获取可以通过在 INSERTUPDATE 语句中与 RETURNING 一起使用,或者在 INSERTUPDATE 之后添加额外的 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 CASCADE
  • passive_updates -
    指示联合表继承映射中主键列更改时外键列的 UPDATE 行为。默认为True
    当为 True 时,假定数据库上的外键已配置为 ON UPDATE CASCADE,并且数据库将处理从源列到联合表行上的依赖列的 UPDATE 传播。
    当为 False 时,假定数据库不执行参照完整性,并且不会为更新发出自己的 CASCADE 操作。在主键更改期间,工作单元过程将针对依赖列发出 UPDATE 语句。
    另请参阅
    可变主键 / 更新级联 - 描述与 relationship() 一起使用的类似功能的说明
    mapper.passive_deletes - 为连接表继承映射器支持 ON DELETE CASCADE
  • polymorphic_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实例的字典,这些实例定义了该属性的持久化行为。请注意,在映射到映射TableColumn对象时,除非被覆盖,否则会自动将其放置到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_propertyhybrid_methodAssociationProxy

为了区分映射属性和扩展属性,属性InspectionAttr.extension_type将引用一个常量,用于区分不同的扩展类型。

属性的排序基于以下规则:

  1. 从子类到超类按顺序迭代类及其超类(即通过cls.__mro__迭代)
  2. 对于每个类,按照它们在__dict__中出现的顺序生成属性,但以下步骤除外。在 Python 3.6 及以上版本中,此顺序将与类的构造相同,但有一个例外,即应用程序或映射器后来添加的属性。
  3. 如果某个属性键也在超类__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具有该属性的几个预过滤视图,限制了返回的属性类型,包括synonymscolumn_attrsrelationshipscomposites

警告

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 映射的主键列的结果集生成的RowRowMapping

从版本 2.0 开始:RowRowMapping被接受作为“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

Mapperpolymorphic_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 意识到的所有 TableTableClause 对象的序列。

如果映射器被映射到一个 Join 或者代表 SelectAlias,构成完整结构的各个 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)

相关文章
|
1月前
|
存储 SQL API
SqlAlchemy 2.0 中文文档(四)(5)
SqlAlchemy 2.0 中文文档(四)
20 3
|
1月前
|
SQL 存储 数据库
SqlAlchemy 2.0 中文文档(一)(3)
SqlAlchemy 2.0 中文文档(一)
27 1
|
1月前
|
SQL API 数据库
SqlAlchemy 2.0 中文文档(一)(5)
SqlAlchemy 2.0 中文文档(一)
20 1
|
1月前
|
SQL 关系型数据库 测试技术
SqlAlchemy 2.0 中文文档(十)(1)
SqlAlchemy 2.0 中文文档(十)
14 1
|
1月前
|
SQL 缓存 关系型数据库
SqlAlchemy 2.0 中文文档(三)(2)
SqlAlchemy 2.0 中文文档(三)
17 1
|
1月前
|
SQL 关系型数据库 MySQL
SqlAlchemy 2.0 中文文档(三)(1)
SqlAlchemy 2.0 中文文档(三)
22 1
|
1月前
|
SQL 数据库 Python
SqlAlchemy 2.0 中文文档(十)(3)
SqlAlchemy 2.0 中文文档(十)
19 1
|
1月前
|
SQL JSON 关系型数据库
SqlAlchemy 2.0 中文文档(二)(2)
SqlAlchemy 2.0 中文文档(二)
21 2
|
1月前
|
存储 Python
SqlAlchemy 2.0 中文文档(七)(5)
SqlAlchemy 2.0 中文文档(七)
15 1
|
1月前
|
SQL 测试技术 数据库
SqlAlchemy 2.0 中文文档(三)(4)
SqlAlchemy 2.0 中文文档(三)
14 0