首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SqlAlchemy 2.0 中文文档(九)

加载连接继承映射 请参阅编写继承映射的 SELECT 语句部分,了解关于继承加载技术的背景,包括在映射器配置时间和查询时间配置要查询的表。## 单表继承 单表继承在单个表中表示所有子类的所有属性。...单表继承相对于联接表继承具有简单性的优势;查询要高效得多,因为只需要涉及一个表来加载每个表示类的对象。 单表继承配置看起来很像联接表继承,除了只有基类指定了__tablename__。...请参阅编写用于继承映射的 SELECT 语句和单表继承映射的 SELECT 语句章节,了解有关继承加载技术的文档,包括在映射器配置时间和查询时间配置要查询的类。...加载连接继承映射 请参阅编写用于继承映射的 SELECT 语句部分,了解继承加载技术的背景,包括在映射器配置时间和查询时间配置要查询的表。 单表继承 单表继承将所有子类的所有属性表示为单个表中的内容。...单表继承相对于连接表继承具有简单性的优势;查询效率更高,因为只需要涉及一个表来加载每个表示类的对象。 单表继承配置看起来很像连接表继承,只是基类指定了__tablename__。

26810

SqlAlchemy 2.0 中文文档(六)

单表继承 下面的示例说明了用于配置单表继承映射时使用的 Mapper.polymorphic_on 和 Mapper.polymorphic_identity 参数的声明级别设置: class Person...单表继承 下面的示例说明了用于配置单表继承映射时使用的 Mapper.polymorphic_on 和 Mapper.polymorphic_identity 参数的声明级别设置: class Person...这个方法可以用于生成继承映射层次结构中的表名称,就像下面的示例一样,该示例创建一个 mixin,根据类名给每个类生成一个简单的表名称。...这个配方可用于为继承映射器层次结构生成表名,如下例所示,该示例创建了一个混合类,根据类名为每个类提供一个简单的表名。...此示例可用于为继承的映射器层次结构生成表名,如下例所示,它创建了一个基于类名的简单表名的 mixin。

38710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SqlAlchemy 2.0 中文文档(四)

    使用 _orm.declared_attr() 与继承 Table 和 Mapper 参数 使用 _orm.declared_attr() 生成表特定的继承列 从多个混合类组合表/映射器参数...嵌套复合体 复合体 API composite() 映射类继承层次结构 联接表继承 与联接继承相关的关系 加载联接继承映射 单表继承 使用 use_existing_column...解决列冲突 与单表继承相关的关系 使用 polymorphic_abstract 构建更深层次的层次结构 加载单表继承映射 具体表继承 具体多态加载配置 抽象具体类...经典和半经典具体多态配置 具体继承关系的关系 加载具体继承映射 非传统映射 将类映射到多个表 将类映射到任意子查询 一个类的多个映射器 配置版本计数器...__table__ 当使用 Mapper.local_table 属性时,返回的也是这个 FromClause: table = inspect(User).local_table 对于单表继承映射,其中类是没有自己的表的子类

    32810

    SqlAlchemy 2.0 中文文档(十)

    如果此映射器使用单表继承从另一个映射器继承,则可以为 None。在使用声明式时,此参数由扩展自动传递,根据通过 DeclarativeBase....concrete – 如果为 True,则表示此映射器应使用具体表继承与其父映射器。 请参阅具体表继承中的示例。...polymorphic_load – 在继承层次结构中的子类中指定“多态加载”行为(仅适用于连接和单表继承)。...参见 映射到一组显式主键列 - 背景和示例用法 version_id_col – 用于保持表中行的运行版本 ID 的Column。这用于检测并发更新或刷新中存在过时数据的存在。...attribute single: bool 如果此 Mapper 是单表继承映射器,则表示 True。 如果设置了此标志,Mapper.local_table 将为 None。

    24810

    SqlAlchemy 2.0 中文文档(十六)

    ## 单一继承映射的 SELECT 语句 单一表继承设置 本节讨论单表继承,描述在单表继承中使用单个表表示层次结构中的多个类。 查看本节的 ORM 设置。...使用此方法将确保每个后代映射器的表都包含在 FROM 子句中,并允许对这些表使用 filter() 条件。结果实例还将已加载这些列,因此不需要对这些列进行“后获取”。...Krabs' 要改变这种行为,对于单继承,与连接继承加载中使用的相同的一般概念也适用于急切地加载这些额外属性,包括使用 selectin_polymorphic() 选项以及 with_polymorphic...使用这种方法将确保每个子类映射器的表都包含在 FROM 子句中,并允许对这些表使用 filter()条件。结果实例也将已经加载了那些列,因此不需要对这些列进行“后获取”。...使用这种方法将确保每个子类映射器的表都包含在 FROM 子句中,并允许对这些表使用 filter()条件。结果实例也将已经加载了那些列,因此不需要对这些列进行“后获取”。

    28410

    SqlAlchemy 2.0 中文文档(八十)

    在子表具有外键指向父表主键的联接表继承配置现在可以在像 PostgreSQL 这样支持级联的数据库上更新。...在子表具有外键到父表主键的联接表继承配置中,现在可以在类似 PostgreSQL 这样支持级联的数据库上进行更新。...建议使用声明性用于不需要(且不喜欢)表和映射器之间抽象的应用程序 - [/docs/05/reference/ext/declarative.html 声明性]模块用于将Table、mapper()和用户定义的类对象的表达结合在一起...对继承类的延迟加载进行了改进,现在映射器在所有情况下都会生成“优化”版本的 SELECT 语句;也就是说,如果类 B 继承自 A,并且类 B 上的几个属性已过期,刷新操作将只包括 B 的表在 SELECT...推荐为不需要(也不偏好)表和映射器之间抽象的应用程序使用声明式 - [/docs/05/reference/ext/declarative.html 声明式] 模块,用于将 Table、mapper()

    20410

    SqlAlchemy 2.0 中文文档(七十九)

    特别是这通常适用于连接表继承配置中的“子”表,这意味着对于大量连接表对象的大量插入,可以将对cursor.execute的调用次数减半,从而允许本地 DBAPI 优化为那些传递给cursor.executemany...特别是在连接表继承配置中通常适用于“子”表,这意味着对于大量连接表对象的大批量插入,可以将对cursor.execute的调用次数减半,从而允许本地 DBAPI 优化对传递给cursor.executemany...特别是这通常适用于连接表继承配置中的“子”表,这意味着对于大量连接表对象的批量插入,可以将cursor.execute的调用次数减少一半,从而允许针对那些传递给cursor.executemany()的语句进行本地...,跨两个表的连接继承加载将从子表的值填充,而不是父表的值。...,跨两个表的连接继承加载将从子表的值填充,而不是父表的值。

    10310

    SqlAlchemy 2.0 中文文档(二十六)

    参数(Parameters): propagate=False – 当为 True 时,事件监听器应应用于所有继承映射器和/或继承类的映射器,以及任何作为此监听器目标的映射器。...参数: propagate=False – 当为 True 时,事件监听器应该应用于所有继承类��以及作为此监听器目标的类。...可能导致事件处理程序内“加载上下文”更改的示例包括但不限于: 访问未包含在行中的延迟属性将触发“取消延迟”操作并刷新对象 访问联合继承子类上不属于行的属性将触发刷新操作。...参数: propagate=False – 当为 True 时,事件监听器应用于所有继承映射器和/或继承类的映射器,以及任何作为此监听器目标的映射器。...当将监听器应用于具有映射子类的映射类时,AttributeEvents.propagate标志也很重要,例如在使用映射器继承模式时: @event.listens_for(MySuperClass.attr

    31210

    SqlAlchemy 2.0 中文文档(七十三)

    随着这种用例变得更加流行,它的局限性变得明显,包括非主映射器难以配置到可选择添加新列的可选项上,映射器不继承原始映射的关系,显式配置在非主映射器上的关系与加载器选项不兼容,非主映射器也没有提供可用于查询的基于列的属性的完全功能命名空间...然而,“selectin”加载仍然依赖于在父表和相关表之间渲染 JOIN,因为它需要父表主键值在行中以匹配行。...尽管如此,根据 SQLite 自己文档中的示例,JSON 的名称仍然被用于其熟悉性。...随着这个用例变得越来越流行,它的局限性也变得明显,包括非主要映射器难以配置以适应添加新列的可选择项,映射器不继承原始映射的关系,明确配置在非主要映射器上的关系与加载器选项不兼容,非主要映射器还不能提供可在查询中使用的基于列的属性的完全功能命名空间...随着这种使用情况越来越普遍,它的局限性变得明显,包括非主映射器难以配置到可选的添加新列的地方,映射器不继承原始映射的关系,非主映射器上明确配置的关系在加载器选项中表现不佳,非主映射器也不提供可以在查询中使用的基于列的属性的完整功能命名空间

    24510

    SqlAlchemy 2.0 中文文档(三十一)

    注意 AbstractConcreteBase延迟了基类的映射器创建,直到所有子类都已定义,因为它需要创建一个针对包含所有子类表的可选择项的映射。...另请参阅 AbstractConcreteBase 具体表继承 class sqlalchemy.ext.declarative.DeferredReflection 一个用于基于延迟反射步骤构建映射的辅助类...例如,使用经典的表元数据: from sqlalchemy import Table, Column, Integer my_data = Table('my_data', metadata,...例如,使用经典表元数据: from sqlalchemy import Table, Column, Integer my_data = Table('my_data', metadata,...这是一个方便的方法,会自动调用associate_with_attribute。 警告 该方法建立的监听器是全局的,适用于所有映射器,并且不会被垃圾回收。

    44520

    SqlAlchemy 2.0 中文文档(五)

    本节将概述可用于声明性映射器配置的形式。...“声明性基类”的替代方案,可以将声明性映射明确应用于类,方法是使用类似于“经典”映射的命令式技术,或者更简洁地使用装饰器。...在使用单表继承的特定情况下,也可以向映射添加额外的Column对象,在这种情况下,映射的子类上存在额外的列,但它们没有自己的Table。这在单表继承部分有所说明。...在使用单表继承的特定情况下,还可以向映射添加其他Column对象,在此情况下,映射的子类上存在其他列,这些列没有自己的Table。这在单表继承部分进行了说明。...在使用单表继承的特定情况下,还可以将其他 Column 对象添加到映射中,其中在映射的子类上存在其他列,这些列没有自己的 Table。这在 单表继承 部分有说明。

    29710

    SqlAlchemy 2.0 中文文档(十八)

    使用的映射包括将存储大字符串值的列,我们可能希望限制它们何时加载。 查看此页面的 ORM 设置。以下示例中的一些将重新定义 Book 映射器以修改某些列定义。...用于防止生成不需要的 SQL。 版本 1.4 中的新功能。...通常需要阻止此加载的发生,并在访问属性时引发异常,表示不期望需要查询数据库以获取此列的需求。典型场景是使用已知需要用于操作进行的所有列加载对象,然后将其传递到视图层。...参数: key – 需要填充的属性 expr – 应用于属性的 SQL 表达式。...参数: key – 需要填充的属性 expr – 应用于属性的 SQL 表达式。 参见 将任意的 SQL 表达式加载到对象上 - 背景和使用示例

    27910

    SQLAlchemy简单入门

    SQlAlchemy简单使用 sqlalchemy介绍 SQLAlchemy的是Python的SQL工具包和对象关系映射器,让应用程序开发人员可以使用上SQL的强大功能和灵活性。...SQLAlchemy的理念 SQL数据库与对象集合目标不同,它需要关注更大的数据容量与更高的性能;而对象集合则和数据表或数据行的目标不同,它需要更好的数据抽象。...SQLAlchemy设计的目的,就是适配这两个原则。 SQLAlchemy把数据库当作是一个关系型代数引擎,不只是数据表的一个集合。...SQLAlchemy组件中最有名的是它的对象关系映射器(ORM),是一个提供数据映射器模式的可选组件,利用这个组件,类可以以开放式的多种方式映射到数据库上,允许对象模型的设计和数据库架构的设计,一开始就以分离方式进行各自的开发...心 * 自由 不过相比Django的ORM.sqlalchemy对sql的支持更好. 上面只是简单的介绍了sqlalchemy的增删查改,需要更加深入的特性,可以查看官方文档,或者查看源码.

    2.1K100

    SqlAlchemy 2.0 中文文档(二十五)

    有关 SessionEvents.before_flush() 的示例,请参见具有历史表的版本控制和使用时间行进行版本控制等示例。...有关SessionEvents.before_flush()的示例,请参见带有历史表的版本控制和使用时间行进行版本控制等示例。...mappings - 一个字典序列,每个字典包含要更新的映射行的状态,以映射类上的属性名称表示。如果映射涉及多个表,比如联接继承映射,每个字典可能包含与所有表对应的键。...如果映射涉及多个表,例如连接继承映射,每个字典可能包含与所有表对应的键。所有那些存在且不是主键的键将应用于 UPDATE 语句的 SET 子句;必需的主键值将应用于 WHERE 子句。...)且尚未加载 在加载此对象的查询中不存在,例如在联接表继承和其他场景中常见的情况。

    19910

    SqlAlchemy 2.0 中文文档(八十一)

    迄今为止的 ORM 文档: www.sqlalchemy.org/docs/04/session.html#unitofwork_managing 继承 无连接或联合的多态继承 继承的新文档:www.sqlalchemy.org...请注意,基于属性的表达式仅适用于映射类的映射属性。.c 仍然用于访问常规表中的列以及从 SQL 表达式生成的可选择对象。...迄今为止的 ORM 文档: www.sqlalchemy.org/docs/04/session.html#unitofwork_managing 继承 无联接或联合的多态继承 继承的新文档:www.sqlalchemy.org...请注意,基于属性的表达式仅适用于映射类的映射属性。.c仍然用于访问常规表中的列以及从 SQL 表达式生成的可选择对象。...迄今为止的 ORM 文档: www.sqlalchemy.org/docs/04/session.html#unitofwork_managing 继承 无连接或联合的多态继承 继承的新文档:www.sqlalchemy.org

    9710

    SqlAlchemy 2.0 中文文档(二十一)

    ,包括在使用映射器继承配置时批量 UPDATE 和 DELETE 的限制。...语句一节,了解重要的警告和注意事项,包括在使用任意 UPDATE 和 DELETE 与映射器继承配置时的限制。...此方法类似于Select.with_hint(),不过不需要单独的表,而是适用于整个语句。 这里的提示是特定于后端数据库的,并且可能包括隔离级别、文件指令、提取指令等指令。...语句部分以获取重要的注意事项和警告,包括在使用任意 UPDATE 和 DELETE 与映射器继承配置时的限制。...此方法类似于 Select.with_hint(),但不需要单独的表,而是适用于整个语句。 此处的提示是特定于后端数据库的,并且可能包括诸如隔离级别、文件指令、提取指令等的指令。

    57410
    领券