类映射API¶

sqlalchemy.orm.mapper(class_, local_table=None, properties=None, primary_key=None, non_primary=False, inherits=None, inherit_condition=None, inherit_foreign_keys=None, extension=None, order_by=False, always_refresh=False, version_id_col=None, version_id_generator=None, polymorphic_on=None, _polymorphic_map=None, polymorphic_identity=None, concrete=False, with_polymorphic=None, polymorphic_load=None, allow_partial_pks=True, batch=True, column_prefix=None, include_properties=None, exclude_properties=None, passive_updates=True, passive_deletes=False, confirm_deleted_rows=True, eager_defaults=False, legacy_is_orphan=False, _compiled_cache_size=100)

返回一个新的 Mapper 对象。

此函数通常通过声明性扩展在后台使用。当使用声明性时,通常 mapper() 参数由声明性扩展本身处理,包括 class_local_tablepropertiesinherits . 其他选项传递给 mapper() 使用 __mapper_args__ 类变量:

class MyClass(Base):
    __tablename__ = 'my_table'
    id = Column(Integer, primary_key=True)
    type = Column(String(50))
    alt = Column("some_alt", Integer)

    __mapper_args__ = {
        'polymorphic_on' : type
    }

明确使用 mapper() 通常被称为 经典映射 . 上面的声明性示例在经典形式中等价于:

my_table = Table("my_table", metadata,
    Column('id', Integer, primary_key=True),
    Column('type', String(50)),
    Column("some_alt", Integer)
)

class MyClass(object):
    pass

mapper(MyClass, my_table,
    polymorphic_on=my_table.c.type,
    properties={
        'alt':my_table.c.some_alt
    })

参见

经典映射 - discussion of direct usage of mapper()

参数
  • class_ -- 要映射的类。使用声明性时,此参数自动作为声明类本身传递。

  • local_table -- 这个 Table 或其他可选择的类。可能是 None 如果此映射器使用单表继承从另一个映射器继承。使用声明性时,根据通过 __table__ 争论或通过 Table 产生于 __tablename__Column 存在参数。

  • always_refresh -- 如果为true,则此映射类的所有查询操作都将覆盖会话中已存在的对象实例中的所有数据,用从数据库加载的任何信息擦除内存中的任何更改。不鼓励使用此标志;作为替代方法,请参阅方法 Query.populate_existing() .

  • allow_partial_pks -- 默认为true。指示应将具有一些空值的复合主键视为可能存在于数据库中。这会影响映射器是否将传入行分配给现有标识,以及 Session.merge() 将首先检查数据库中的特定主键值。例如,如果映射到外部联接,则可能发生“部分主键”。

  • batch -- 默认为 True 表示多个实体的保存操作可以一起批处理以提高效率。设置为false表示在保存下一个实例之前,将完全保存一个实例。这是在极为罕见的情况下使用的 MapperEvents 侦听器要求在单个行持久性操作之间调用。

  • column_prefix -- 一个字符串,当 Column 对象被自动指定为映射类的属性。不影响显式指定的基于列的属性。见剖面图 用前缀命名所有列 举个例子。

  • concrete -- 如果为true,则指示此映射器应将具体的表继承与其父映射器一起使用。见剖面图 具体的表继承 举个例子。

  • confirm_deleted_rows -- 默认值为true;当基于特定主键对多个行执行删除操作时,如果匹配的行数不等于预期的行数,则会发出警告。此参数可以设置为false,以处理数据库on delete级联规则可能会自动删除其中一些行的情况。警告可能在将来的版本中更改为异常。…版本已添加::0.9.4-已添加 mapper.confirm_deleted_rows 以及删除时的条件匹配行检查。

  • eager_defaults -- 如果为true,则ORM将在插入或更新之后立即获取服务器生成的默认值的值,而不是将其保留为过期以便下次访问时提取。这可用于事件方案,其中在刷新完成前立即需要服务器生成的值。默认情况下,此方案将发出一个 SELECT 每行插入或更新一条语句,这会增加大量的性能开销。但是,如果目标数据库支持 RETURNING ,默认值将与insert或update语句内联返回,这可以大大提高需要频繁访问刚生成的服务器默认值的应用程序的性能。…参阅: 正在获取服务器生成的默认值 …版本已更改::0.9.0 eager_defaults 选项现在可以利用 RETURNING 用于支撑它的后端。

  • exclude_properties -- 要从映射中排除的字符串列名的列表或集合。见 映射表列的子集 举个例子。

  • extension -- A MapperExtension 实例或列表 MapperExtension 将由此应用于所有操作的实例 Mapper . …已弃用::0.7 MapperExtension 已弃用,取而代之的是 MapperEvents 侦听器接口。这个 mapper.extension 参数将在将来的版本中删除。

  • include_properties -- 要映射的包含列表或字符串列名集。见 映射表列的子集 举个例子。

  • inherits -- 映射类或相应的 Mapper 其中一个表示超类 Mapper 应该 继承 从…此处的映射类必须是其他映射器类的子类。使用声明性时,此参数将作为声明类的自然类层次结构的结果自动传递。…参阅: 映射类继承层次结构

  • inherit_condition -- 对于联接表继承,定义两个表联接方式的SQL表达式;默认为两个表之间的自然联接。

  • inherit_foreign_keys -- 什么时候? inherit_condition 已使用,并且存在的列缺少 ForeignKey 配置,此参数可用于指定哪些列是“外部”列。在大多数情况下,可以保留为 None .

  • legacy_is_orphan -- 布尔值,默认为 False . 什么时候? True ,指定将“旧”孤立考虑因素应用于此映射器映射的对象,这意味着挂起(即,非持久)对象将自动从所属对象中删除。 Session 仅当它与 all 指定的父级 delete-orphan 向这个映射器级联。新的默认行为是,当对象与 any 它的父级指定 delete-orphan 级联。这种行为与持久对象的行为更为一致,并且允许在更多场景中保持行为一致,而不管是否刷新了孤立对象。请参阅更改说明和示例 把“悬而未决”的对象当作"orphan"的考虑变得更具侵略性。 有关此更改的详细信息。

  • non_primary -- 指定此 Mapper 除了“主”映射器之外,也就是用于持久性的映射器。这个 Mapper 此处创建的类可以用于将类临时映射到可选的替代对象,仅用于加载。…已弃用::1.3 mapper.non_primary 参数已弃用,将在将来的版本中删除。非主映射器的功能现在更适合使用 AliasedClass 构造,也可以用作 relationship() 1.3。 Mapper.non_primary 不是常用的选项,但在某些特定的 relationship() 病例。…参阅: relationship_non_primary_mapper

  • order_by -- 单一的 Column 或列表 Column 选择操作应用作实体默认顺序的对象。默认情况下,映射器没有预定义的顺序。…已弃用::1.1 mapper.order_by 参数已弃用,将在将来的版本中删除。使用 Query.order_by() 确定结果集的顺序。

  • passive_deletes -- 指示删除联接表继承实体时外键列的删除行为。默认为 False 对于基本映射器;对于继承映射器,默认为 False 除非该值设置为 True 在超类映射器上。什么时候? True ,假定在删除时对将此映射器的表链接到其超类表的外键关系进行了配置,以便当工作单元尝试删除实体时,它只需要为超类表而不是此表发出一条删除语句。什么时候? False ,将单独为此映射器的表发出一条DELETE语句。如果卸载了此表的本地主键属性,则必须发出选择以验证这些属性;请注意,联接表子类的主键列不是对象整体“主键”的一部分。请注意,值为 True总是 强制到子类映射器上;也就是说,如果没有对所有子类映射器生效,超类就不可能指定被动删除。…版本已添加::1.1..参阅: 使用被动删除 -类似特征的描述 relationship() mapper.passive_updates -支持联合表继承映射器的更新级联

  • passive_updates -- 指示在联接表继承映射上更改主键列时外键列的更新行为。默认为 True . 如果为true,则假定在更新时对数据库中的外键配置了级联,并且数据库将处理从源列到联接表行上的依赖列的更新传播。如果为false,则假定数据库不强制引用完整性,也不会为更新发出自己的级联操作。工作单元进程将在主键更改期间为依赖列发出更新语句。…参阅: 可变主键/更新级联 -类似特征的描述 relationship() mapper.passive_deletes -支持联合表继承映射器的删除级联

  • polymorphic_load -- 为继承层次结构中的子类指定“多态加载”行为(仅限于联合表继承和单表继承)。有效值为: * "'inline'" - specifies this class should be part of the "with_polymorphic" mappers, e.g. its columns will be included in a SELECT query against the base. * “'selectin'”—指定当加载此类的实例时,将发出一个附加的select来检索此子类的特定列。select使用in一次获取多个子类。…版本已添加::1.2..参阅: 在映射器配置时使用多态性设置 多态性选择素加载

  • polymorphic_on -- 指定当存在继承类时,用于确定传入行的目标类的列、属性或SQL表达式。此值通常是 Column 映射中存在的对象 Table ::班级员工(基础): __tablename__ ='Employee'id=column(integer,primary_key=true)discriminator=column(string(50))。 __mapper_args__ =“polymorphic_on”:鉴别器,“polymorphic_identity”:“employee”也可以指定为SQL表达式,在本例中,我们使用 case() 构造以提供条件方法::类Employee(Base): __tablename__ ='Employee'id=column(integer,primary_key=true)discriminator=column(string(50))。 __mapper_args__ =“多态性开启”:案例( [ (discriminator == "EN", "engineer"), (discriminator == "MA", "manager"), ] ,else_uu=“employee”),“polymorphic_identity”:“employee”它还可以引用配置为 column_property() ,或指向one::ClassEmployee(base)的字符串名称: __tablename__ ='Employee'id=column(integer,primary_key=true)discriminator=column(string(50))Employee_type=column_property(case( [ (discriminator == "EN", "engineer"), (discriminator == "MA", "manager"), ] ,否则“员工”)) __mapper_args__ =“多态性开启”:员工类型,“多态性身份”:“员工”设置时 polymorphic_on 引用本地映射中不存在的属性或表达式 Table ,但鉴别器的值应保留到数据库中,鉴别器的值不会自动设置在新实例上;这必须由用户通过手动方式或通过事件侦听器进行处理。建立此类侦听器的典型方法类似于::from sqlachemy import event from sqlachemy.orm import object_mapper@event.listens_for(employee,“init”,propagate=true)def set_identity(instance, 精氨酸 kw): mapper = object_mapper(instance) instance.discriminator = mapper.polymorphic_identity Where above, we assign the value of ``polymorphic_identity`` for the mapped class to the ``discriminator`` attribute, thus persisting the value to the ``discriminator`` column in the database. .. warning:: Currently, * *只能设置一个鉴别器列 *,通常位于层次结构中最基本的类上。“尚不支持层叠的“多态列”。…参阅: 映射类继承层次结构

  • polymorphic_identity -- 指定由引用的列表达式返回的标识此特定类的值。 polymorphic_on 设置。当收到行时,对应于 polymorphic_on 将列表达式与该值进行比较,指示应为新重建的对象使用哪个子类。

  • properties -- 将对象属性的字符串名称映射到 MapperProperty 实例,定义该属性的持久性行为。注意 Column 映射中存在的对象 Table 自动放入 ColumnProperty 映射时的实例,除非重写。使用声明性时,将根据所有这些参数自动传递此参数 MapperProperty 在声明的类主体中声明的实例。

  • primary_key -- 列表 Column 对象,该对象定义要用于此映射器的可选单元的主键。这通常只是 local_table ,但可以在此处重写。

  • version_id_col -- A Column 它将用于在表中保留行的运行版本ID。这用于检测并发更新或刷新中存在过时数据。方法是检测更新语句是否与上一个已知版本ID,a不匹配。 StaleDataError 引发异常。默认情况下,列必须为 Integer 类型,除非 version_id_generator 指定替代版本生成器。…参阅: 配置版本计数器 -讨论版本计数和基本原理。

  • version_id_generator -- 定义应如何生成新版本ID。默认为 None 表示采用简单的整数计数方案。要提供自定义版本控制方案,请提供以下形式的可调用函数::def generate_version(version):或者返回下一个版本,也可以通过指定值使用服务器端版本控制功能(如触发器)或版本ID生成器外部的编程版本控制方案 False . 请看 服务器端版本计数器 讨论使用此选项时的要点。…添加的版本:0.9.0 version_id_generator 支持服务器端版本号生成。…参阅: 自定义版本计数器/类型 服务器端版本计数器

  • with_polymorphic -- 形式中的元组 (<classes>, <selectable>) 指示“多态”加载的默认样式,即一次查询哪些表。<classes>是任何单个或列表的映射器和/或类,指示应立即加载的继承类。特殊价值 '*' 可用于指示应立即加载所有降序类。第二个tuple参数<selectable>表示将用于查询多个类的可选参数。…参阅: 与多态性一起使用 -多态查询技术的讨论。

sqlalchemy.orm.object_mapper(instance)

给定一个对象,返回与该对象实例关联的主映射器。

加薪 sqlalchemy.orm.exc.UnmappedInstanceError 如果未配置映射。

此功能通过检查系统可用,如下所示:

inspect(instance).mapper

使用检查系统将提高 sqlalchemy.exc.NoInspectionAvailable 如果实例不是映射的一部分。

sqlalchemy.orm.class_mapper(class_, configure=True)

给定一个类,返回主类 Mapper 与键关联。

加薪 UnmappedClassError 如果在给定的类上没有配置映射,或者 ArgumentError 如果传递了非类对象。

等效功能可通过 inspect() 功能如下:

inspect(some_mapped_class)

使用检查系统将提高 sqlalchemy.exc.NoInspectionAvailable 如果未映射类。

sqlalchemy.orm.configure_mappers()

初始化到目前为止构造的所有映射器的映射器之间的关系。

这个函数可以被调用任意次数,但在大多数情况下是自动调用的,使用第一次映射,以及使用映射和构造其他尚未配置的映射器时。

发生这种情况的点包括将映射类实例化为实例时,以及 Session.query() 方法。

这个 configure_mappers() 函数提供了几个事件挂钩,可用于增强其功能。这些方法包括:

sqlalchemy.orm.clear_mappers()

从所有类中移除所有映射器。

此函数从类中移除所有检测并释放其关联的映射器。一旦调用,类将被取消映射,稍后可以使用新的映射器重新映射。

clear_mappers()not 对于正常使用,因为在非常具体的测试场景之外,实际上没有对它的有效使用。通常,映射器是用户定义类的永久性结构组件,永远不会独立于类被丢弃。如果映射类本身被垃圾收集,那么它的映射器也会被自动释放。像这样的, clear_mappers() 仅适用于在具有不同映射的相同类中重复使用的测试套件,这本身是一个极其罕见的用例-唯一这样的用例实际上是SQLAlchemy自己的测试套件,并且可能是其他ORM扩展库的测试套件,这些库打算在固定的类集上测试映射器构造的各种组合。

sqlalchemy.orm.util.identity_key(*args, **kwargs)

生成“identity key”元组,用作 Session.identity_map 字典。

此函数有几种调用样式:

  • identity_key(class, ident, identity_token=token)

    此窗体接收一个映射类和一个主键标量或元组作为参数。

    例如。::

    >>> identity_key(MyClass, (1, 2))
    (<class '__main__.MyClass'>, (1, 2), None)
    PARAM类

    映射类(必须是位置参数)

    参数识别

    主键,可以是标量或元组参数。

    参数标识令牌

    可选标识令牌

    1.2 新版功能: 添加标识令牌

  • identity_key(instance=instance)

    此表单将生成给定实例的标识密钥。实例不需要持久化,只需要填充其主键属性(否则该键将包含 None 对于那些缺失的值)。

    例如。::

    >>> instance = MyClass(1, 2)
    >>> identity_key(instance=instance)
    (<class '__main__.MyClass'>, (1, 2), None)

    在这种形式下,给定的实例最终会运行 Mapper.identity_key_from_instance() 如果对象已过期,将对相应的行执行数据库检查。

    PARAM实例

    对象实例(必须作为关键字arg提供)

  • identity_key(class, row=row, identity_token=token)

    此窗体类似于类/元组窗体,但将数据库结果行作为 RowProxy 对象。

    例如。::

    >>> row = engine.execute("select * from table where a=1 and b=2").first()
    >>> identity_key(MyClass, row=row)
    (<class '__main__.MyClass'>, (1, 2), None)
    PARAM类

    映射类(必须是位置参数)

    参数行

    RowProxy A返回的行 ResultProxy (必须作为关键字arg提供)

    参数标识令牌

    可选标识令牌

    1.2 新版功能: 添加标识令牌

sqlalchemy.orm.util.polymorphic_union(table_map, typecolname, aliasname='p_union', cast_nulls=True)

创建一个 UNION 多态映射器使用的语句。

具体的表继承 例如如何使用它。

参数
  • table_map -- 多态性特征映射到 Table 对象。

  • typecolname -- “discriminator”列的字符串名称,该列将从查询中派生,为每一行生成多态标识。如果 None ,不生成多态鉴别器。

  • aliasname -- 名称 alias() 已生成构造。

  • cast_nulls -- 如果为true,则不存在的列(以标记为nulls的形式表示)将被传递到cast中。这是一种遗留行为,在某些后端(如Oracle)存在问题,在这种情况下,可以将其设置为false。

class sqlalchemy.orm.mapper.Mapper(class_, local_table=None, properties=None, primary_key=None, non_primary=False, inherits=None, inherit_condition=None, inherit_foreign_keys=None, extension=None, order_by=False, always_refresh=False, version_id_col=None, version_id_generator=None, polymorphic_on=None, _polymorphic_map=None, polymorphic_identity=None, concrete=False, with_polymorphic=None, polymorphic_load=None, allow_partial_pks=True, batch=True, column_prefix=None, include_properties=None, exclude_properties=None, passive_updates=True, passive_deletes=False, confirm_deleted_rows=True, eager_defaults=False, legacy_is_orphan=False, _compiled_cache_size=100)

基地: sqlalchemy.orm.base.InspectionAttr

定义类属性与数据库表列的关联。

这个 Mapper 对象是使用 mapper() 功能。有关实例化新的信息 Mapper 对象,请参见该函数的文档。

什么时候? mapper() 用于将用户定义的类与表元数据显式链接,这称为 经典映射 . 现代的SQLAlchemy用法倾向于 sqlalchemy.ext.declarative 类配置的扩展,它使用 mapper() 在幕后。

给定一个已知由ORM映射的特定类, Mapper 它可以通过 inspect() 功能:

from sqlalchemy import inspect

mapper = inspect(MyClass)

由映射的类 sqlalchemy.ext.declarative 扩展还将通过 __mapper__ 属性。

__init__(class_, local_table=None, properties=None, primary_key=None, non_primary=False, inherits=None, inherit_condition=None, inherit_foreign_keys=None, extension=None, order_by=False, always_refresh=False, version_id_col=None, version_id_generator=None, polymorphic_on=None, _polymorphic_map=None, polymorphic_identity=None, concrete=False, with_polymorphic=None, polymorphic_load=None, allow_partial_pks=True, batch=True, column_prefix=None, include_properties=None, exclude_properties=None, passive_updates=True, passive_deletes=False, confirm_deleted_rows=True, eager_defaults=False, legacy_is_orphan=False, _compiled_cache_size=100)

构建新的 Mapper 对象。

此构造函数被镜像为公共API函数;请参见 mapper() 完整的用法和参数描述。

add_properties(dict_of_properties)

将给定的属性字典添加到此映射器,使用 add_property .

add_property(key, prop)

将单个映射器属性添加到此映射器。

如果映射器尚未配置,只需将该属性添加到发送给构造函数的初始属性字典中。如果已配置此映射器,则立即配置给定的映射器属性。

all_orm_descriptors

所有名称空间 InspectionAttr 与映射类关联的属性。

这些属性在所有情况下都是python descriptors 与映射类或其超类关联。

此命名空间包括映射到类的属性以及扩展模块声明的属性。它包括继承 InspectionAttr . 这包括 QueryableAttribute 以及扩展类型,例如 hybrid_propertyhybrid_methodAssociationProxy .

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

在处理 QueryableAttribute , the QueryableAttribute.property 属性引用 MapperProperty 属性,这是通过引用映射属性集合 Mapper.attrs .

警告

这个 Mapper.all_orm_descriptors 访问器命名空间是的实例 OrderedProperties . 这是一个类似字典的对象,其中包含少量的命名方法,例如 OrderedProperties.items()OrderedProperties.values() . 动态访问属性时,最好使用dict访问方案,例如 mapper.all_orm_descriptors[somename] 结束 getattr(mapper.all_orm_descriptors, somename) 以避免名称冲突。

参见

Mapper.attrs

attrs

所有名称空间 MapperProperty 与此映射器关联的对象。

这是一个对象,它基于每个属性的键名提供每个属性。例如,映射器 User 班级有 User.name 属性将提供 mapper.attrs.name ,这将是 ColumnProperty 代表 name 列。也可以迭代命名空间对象,这将生成 MapperProperty .

Mapper 具有此属性的几个预筛选视图,这些视图限制返回的属性类型,包括 synonymscolumn_attrsrelationshipscomposites .

警告

这个 Mapper.attrs 访问器命名空间是的实例 OrderedProperties . 这是一个类似字典的对象,其中包含少量的命名方法,例如 OrderedProperties.items()OrderedProperties.values() . 动态访问属性时,最好使用dict访问方案,例如 mapper.attrs[somename] 结束 getattr(mapper.attrs, somename) 以避免名称冲突。

base_mapper = None

最底 Mapper 在继承链中。

在非继承方案中,此属性将始终是 Mapper . 在继承场景中,它引用 Mapper 哪个是所有其他人的父母 Mapper 继承链中的对象。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

c = None

同义词 columns .

cascade_iterator(type_, state, halt_on=None)

对于满足给定级联规则的所有关系,在对象图中迭代每个元素及其映射器。

参数
  • type_ -- 级联规则的名称(即 "save-update""delete" 等)。…注:: "all" 此处不接受层叠。有关一般对象遍历函数,请参见 如何浏览与给定对象相关的所有对象? .

  • state -- Lead InstanceState。将根据为此对象的映射器定义的关系处理子项。

返回

该方法生成单个对象实例。

参见

级联

如何浏览与给定对象相关的所有对象? -说明一个通用函数,用于遍历所有对象而不依赖级联。

class_ = None

python类 Mapper 地图。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

class_manager = None

这个 ClassManager 它维护事件侦听器和类绑定描述符 Mapper .

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

column_attrs

返回所有 ColumnProperty 由此维护的属性 Mapper .

参见

Mapper.attrs -全部的命名空间 MapperProperty 对象。

columns = None

收藏 Column 或由它维护的其他标量表达式对象 Mapper .

集合的行为与 c 任何属性 Table 对象,但只有包含在此映射中的列才存在,并且根据映射中定义的属性名设置了键,不一定是 key 的属性 Column 本身。此外,标量表达式由映射 column_property() 也在这里。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

common_parent(other)

如果给定的映射器与此映射器共享一个公共继承父级,则返回true。

composites

返回所有 CompositeProperty 由此维护的属性 Mapper .

参见

Mapper.attrs -全部的命名空间 MapperProperty 对象。

concrete = None

代表 True 如果这样 Mapper 是一个具体的继承映射器。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

configured = None

代表 True 如果这样 Mapper 已配置。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

entity

检查API的一部分。

返回 self.class_.

get_property(key, _configure_mappers=True)

返回与给定键关联的MapperProperty。

get_property_by_column(column)

给出了一个 Column 对象,返回 MapperProperty 它映射了这个列。

identity_key_from_instance(instance)

根据给定实例的主键属性返回该实例的标识键。

如果实例的状态已过期,则调用此方法将导致数据库检查以查看对象是否已被删除。如果该行不再存在, ObjectDeletedError 提高了。

此值通常也在属性名下的实例状态中找到 key .

identity_key_from_primary_key(primary_key, identity_token=None)

返回用于存储/检索标识映射中的项的标识映射键。

参数

primary_key -- 指示标识符的值列表。

identity_key_from_row(row, identity_token=None, adapter=None)

返回用于存储/检索标识映射中的项的标识映射键。

参数

row -- A RowProxy 实例。由此映射的列 Mapper 应可在行中定位,最好通过 Column 直接对象(如 select() 构造被执行),或者通过表单的字符串名称 <tablename>_<colname> .

inherits = None

参考文献 Mapper 哪一个 Mapper 继承(如果有)。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

is_mapper = True

检查API的一部分。

isa(other)

如果此映射器继承给定的映射器,则返回true。

iterate_properties

返回所有MapperProperty对象的迭代器。

local_table = None

这个 Selectable 哪一个 Mapper 管理。

通常是 TableAlias . 也可能是 None .

“本地”表是可选择的 Mapper 直接负责从属性访问和刷新的角度进行管理。对于非继承映射器,本地表与“mapped”表相同。对于已联接的表继承映射器,本地表将是整个“联接”的特定子表,此 Mapper 代表。如果此映射器是继承映射器的单个表,则本地表将 None .

mapped_table

1.3 版后已移除: 使用.persistu可选

mapper

检查API的一部分。

返回自我。

non_primary = None

代表 True 如果这样 Mapper 是一个“非主”映射器,例如,仅用于选择行但不用于持久性管理的映射器。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

persist_selectable = None

这个 Selectable 对此 Mapper 被映射。

通常是 TableJoinAlias .

这个 Mapper.persist_selectable 与…分开 Mapper.selectable 其中前者表示映射到此类或其超类上的列,而后者可能是一个“多态”可选择的列,其中包含附加的列,实际上只映射到子类上。

“持久可选”是“映射器写入的内容”,“可选”是“映射器选择的内容”。

Mapper.persist_selectable 也与 Mapper.local_table ,它表示直接在此类上本地映射的列集。

参见

selectable .

local_table .

polymorphic_identity = None

表示与 polymorphic_on 结果行加载期间的列。

仅与继承一起使用,此对象可以是任何类型的,与由表示的列的类型相比较。 polymorphic_on .

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

polymorphic_iterator()

循环访问集合,包括此映射器和所有子代映射器。

这不仅包括立即继承的映射器,还包括所有继承的映射器。

要遍历整个层次结构,请使用 mapper.base_mapper.polymorphic_iterator() .

polymorphic_map = None

映射到的“多态身份”标识符的映射 Mapper 实例,在继承场景中。

标识符可以是任何类型的,与列的类型类似,列的类型由 polymorphic_on .

映射器的继承链将引用相同的多态映射对象。对象用于将传入的结果行关联到目标映射器。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

polymorphic_on = None

这个 Column 或指定为 polymorphic_on 关于这个的论点 Mapper 在继承方案中。

此属性通常是 Column 实例,但也可以是表达式,例如派生自 cast() .

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

primary_key = None

包含以下集合的iterable Column 从这个角度来看,组成映射表的“主键”的对象 Mapper .

此列表与 persist_selectable . 在继承映射器的情况下,某些列可能由超类映射器管理。例如,在 Join ,主键由引用的所有表中的所有主键列确定。 Join .

该列表也不一定与与基础表关联的主键列集合相同;该 Mapper 特征A primary_key 可以重写 Mapper 视为主键列。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

primary_key_from_instance(instance)

返回给定实例的主键值列表。

如果实例的状态已过期,则调用此方法将导致数据库检查以查看对象是否已被删除。如果该行不再存在, ObjectDeletedError 提高了。

primary_mapper()

返回对应于此映射器的类键(类)的主映射器。

relationships

所有名称空间 RelationshipProperty 由此维护的属性 Mapper .

警告

这个 Mapper.relationships 访问器命名空间是的实例 OrderedProperties . 这是一个类似字典的对象,其中包含少量的命名方法,例如 OrderedProperties.items()OrderedProperties.values() . 动态访问属性时,最好使用dict访问方案,例如 mapper.relationships[somename] 结束 getattr(mapper.relationships, somename) 以避免名称冲突。

参见

Mapper.attrs -全部的命名空间 MapperProperty 对象。

selectable

这个 select() 构建这个 Mapper 默认情况下从中选择。

通常,这相当于 persist_selectable ,除非 with_polymorphic 功能正在使用中,在这种情况下,将返回完整的“多态”可选项。

self_and_descendants

包含此映射器和所有后代映射器的集合。

这不仅包括立即继承的映射器,还包括所有继承的映射器。

single = None

代表 True 如果这样 Mapper 是单个表继承映射器。

local_tableNone 如果设置了此标志。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

synonyms

返回所有 SynonymProperty 由此维护的属性 Mapper .

参见

Mapper.attrs -全部的命名空间 MapperProperty 对象。

tables = None

包含以下集合的iterable Table 对象 Mapper 意识到。

如果映射器映射到 Join ,或者 Alias 代表一个 Select ,个人 Table 构成完整构造的对象将在此处表示。

这是一个 只读 在映射器构造期间确定的属性。如果直接修改,则未定义行为。

validators = None

使用 validates() 装饰者。

字典包含作为映射到实际验证方法的键的字符串属性名。

with_polymorphic_mappers

名单 Mapper 默认“多态”查询中包含的对象。