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

SqlAlchemy 2.0 中文文档(四)

生成,当被子类化时,将对从派生所有子类应用声明式映射过程,相对于默认情况下新基本地registry。...这种映射风格是“声明式”和“命令式”映射混合,并适用于将映射到反射 Table 对象,以及将映射现有的 Core 构造,连接和子查询。...结果基,当被子类继承时,将对所有从继承子类应用声明式映射过程,相对于默认情况下新基本地 registry。...这种映射风格是“声明式”和“命令式”映射混合体,并适用于将映射到反射Table对象,以及将映射现有 Core 构造,连接和子查询。...这种映射方式是“声明式”和“命令式”映射混合体,适用于诸如将映射到反射Table对象,以及将映射现有的 Core 构造,联接和子查询技术。 声明式映射文档继续在用声明式映射中。

11110

SqlAlchemy 2.0 中文文档(五)

在那些被映射反射表包含主键约束情况下,以及在针对任意可选择项进行映射一般情况下,可能不存在主键列情况下,提供了 Mapper.primary_key 参数,以便可以将任何一组列配置为表“主键...FROM 子句(连接和选择)情况下也很重要。...FROM 子句(连接和选择)情况下也很重要。...在需要映射反射表包含主键约束情况下,以及在映射对任意可选择内容情况下,主键列可能不存在一般情况下,提供了 Mapper.primary_key 参数,以便将任何一组列配置为表“主键”,就 ORM...### 使用 DeferredReflection 为了适应声明映射用例,在此之后可以发生表元数据反射,提供了一个简单扩展叫做DeferredReflection mixin,修改了声明性映射过程

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

SqlAlchemy 2.0 中文文档(五十七)

为了启用使用继承数据,我们利用了 MappedAsDataclass mixin,可以直接在每个上使用,也可以在 Base 上使用,如下所示,在这里我们进一步修改了来自 “Step 5” 示例映射...SQLAlchemy 的当前集成方法将用户定义转换为真正数据,以提供运行时功能;该功能利用了 SQLAlchemy 1.4 中引入现有数据功能,以在完全集成配置样式下生成等效运行时映射,...为了启用使用继承数据,我们利用了MappedAsDataclass mixin,可以直接在每个上使用,也可以在Base上使用,如下面的示例所示,我们进一步修改了“步骤 5”示例映射来自 ORM...迁移现有映射 转向新 ORM 方法开始时更加冗长,但随着可用新功能充分利用,变得比以前更加简洁。以下步骤详细介绍了一个典型转换,然后继续说明了一些更多选项。...为了使用继承启用数据,我们使用MappedAsDataclass mixin,可以直接在每个上使用,也可以在Base上使用,如下所示,我们进一步修改了来自 ORM 声明性模型“步骤 5”示例映射

21710

SqlAlchemy 2.0 中文文档(二十六)

如果未使用 AttributeEvents.include_key 设置事件,根本不会将参数传递给事件;这是为了与包含 key 参数现有事件处理程序向后兼容。 在版本 2.0 中新增。...如果未使用 AttributeEvents.include_key 设置事件,参数根本不会传递给事件;这是为了允许现有事件处理程序与包含 key 参数事件处理程序向后兼容。..._events 仪器化事件 定义了 SQLAlchemy 仪器化系统。 这个模块通常对用户应用程序直接可见,但定义了 ORM 交互大部分内容。...警告 此事件在 Session 发出 SQL 修改数据库之后运行,但在修改内部状态以反映这些更改之前运行,包括将新插入对象放入标识映射中。..._events 进行双向处理 仪器化事件 定义了 SQLAlchemy 仪器化系统。 此模块通常直接对用户应用程序可见,但定义了 ORM 交互大部分内容。

12410

SqlAlchemy 2.0 中文文档(三十二)

这样做原因是为了在返回结构中保留其他级别属性,文档字符串和对混合属性本身引用,而不对传入原始比较器对象进行任何修改。...这样做原因是为了在返回结构中保留其他级别属性,文档字符串和对混合属性本身引用,而不对传入原始比较器对象进行任何修改。...这样做原因是为了在返回结构中保持其他级别属性(文档字符串和对混合本身引用),而不对传入原始 SQL 表达式进行任何修改。...hybrid_property.overrides 访问器只是返回这个混合对象,当在父级别调用时,将取消引用通常在此级别返回“instrumented attribute”,并允许修改装饰器,...hybrid_property.overrides 访问器只是返回这个混合对象,当在父级别调用时,将取消引用通常在此级别返回“instrumented attribute”,并允许修改装饰器,

18710

SqlAlchemy 2.0 中文文档(七)

属性配置 SQLAlchemy 原生数据与普通数据不同之处在于,要映射属性在所有情况下都是使用Mapped泛型注解容器来描述。...属性配置 SQLAlchemy 原生数据与普通数据不同之处在于,要映射属性在所有情况下都是使用 Mapped 泛型注释容器描述。...将 ORM 映射应用于现有数据(旧数据使用) 遗留特性 这里描述方法已被 SQLAlchemy 2.0 系列中声明性数据映射特性取代。...可以使用 registry.map_imperatively() 方法将“命令式”映射应用于现有数据,以完全相同方式生成映射命令式映射中所述。下面在 使用命令式映射预存在数据中说明。...仍然会得到支持,但不太可能在声明式数据映射新方法面前提供任何优势。

19520

SqlAlchemy 2.0 中文文档(八)

,但在通常情况下比混合和列属性方法性能更低,因为需要在每次访问时发出 SQL 查询。...当使用使用声明式基(即由 DeclarativeBase 超或遗留函数 declarative_base() 生成映射)时,此属性分配具有调用 Mapper.add_property() 效果...这在一些编码/解码风格在数据进入数据库和返回时都会发生情况下更为常见;在 Core 文档扩充现有类型中了解更多信息。 使用描述符和混合体 影响属性修改行为更全面的方法是使用描述符。...这在某些编码/解码样式在数据进入数据库和返回时都发生情况下更为常见;在核心文档中阅读更多关于此内容,参见扩充现有类型。 使用描述符和混合类型 产生修改属性行为更全面的方法是使用描述符。...我们还将实现__composite_values__()方法,这是一个固定名称,被composite()构造函数所识别(在使用传统非数据中介绍过),指示了一种接收对象作为列值标准方式,这种情况下将取代通常数据方法论

15010

SqlAlchemy 2.0 中文文档(四十二)

当与此属性相关联是一个Comparator时,允许自定义重新定义所有现有运算符,以及定义新运算符。现有运算符包括通过 Python 运算符重载提供运算符,ColumnOperators....UserDefinedType默认行为与TypeDecorator默认行为相同;默认情况下返回self,假设比较值应强制转换为与此相同类型。...SQLAlchemy PostgreSQL 方言具有一个硬编码映射,将字符串名称"VARCHAR"链接到 SQLAlchemy VARCHAR,这就是为什么当我们发出类似Table('my_table...当与此属性关联Comparator时,允许自定义重新定义所有现有运算符,以及定义新运算符。现有运算符包括通过 Python 运算符重载提供ColumnOperators....SQLAlchemy PostgreSQL 方言有一个硬编码映射,将字符串名称"VARCHAR"链接到 SQLAlchemy VARCHAR ,这就是当我们发出像Table('my_table'

1600

SqlAlchemy 2.0 中文文档(二十)

它还可以通过简单子类化进行扩展,其中主要重写功能是如何返回表达式集,允许后处理以及自定义返回类型,而涉及 ORM 标识映射。...它还可以通过简单子类化进行扩展,其中要覆盖主要能力是如何返回表达式集,允许后处理以及自定义返回类型,而涉及 ORM 身份映射。...当给定是具有许多不同映射子类时,这也可以是“lambda:”或 Python 函数,接受目标作为参数。...结果对象是 AliasedClass 一个实例。此对象实现了与原始映射相同属性和方法接口,允许 AliasedClass 兼容任何在原始上工作属性技术,包括混合属性(参见混合属性)。...它还可以通过简单子类扩展,其中主要重写功能是如何返回表达式集,允许后处理以及自定义返回类型,而涉及 ORM 身份映射

11310

用 GraphQL 快速搭建服务端 API

简单来说,只要接入现有的查询逻辑(比如数据库查询,RPC 调用等)即可,这里展开了。下面要讲到 SQLAlchemy 集成,会提到怎样通过集成来减少实现 resolve 工作量。...根据之前描述,我们现定义 SQLAlchemy 表及其对应映射如下: # Table: starship = Table( 'starship', metadata, Column...表和映射方式有很多种,这里只是其中一种方法。...注意到两个映射 LnCrew 和 LnStarship 内部其实什么都没做,当它们和数据表建立映射关系后查询出实例中会自动填充上数据库表中定义各字段。...SQLAlchemyObjectType ,并在中定义 Meta 指定相关 SQLAlchemy 映射作为模型; 移除所有重复字段定义 (✌️); 保留数据库定义与 GraphQL 对象类型定义不完全相同字段

2.5K30

SqlAlchemy 2.0 中文文档(五十四)

何在给定映射情况下获取所有列、关系、映射属性等列表?...基于列属性可以在映射中被赋予任何所需名称。请参阅明确命名声明式映射列。 如何在给定一个映射情况下获取所有列、关系、映射属性等列表? 所有这些信息都可以从 Mapper 对象中获得。...有关此事详细信息,请参阅 刷新 / 过期。 我们可以在设置了“填充现有”选项情况下运行整个查询,这样它们读取行时就会覆盖已加载对象。这是一个在 填充现有 中描述执行选项。...有关此操作详细信息,请参阅刷新/过期。 我们可以在设置了“填充现有”选项情况下运行整个查询,以确保在读取行时覆盖已加载对象。这是一种在填充现有中描述执行选项。...如果 Session.flush() 能部分完成然后不回滚,那将会很好,但是由于当前能力限制,这是不可能,因为内部记录必须被修改,以便随时停止,并且与已刷新到数据库内容完全一致。

7010

SqlAlchemy 2.0 中文文档(十)

也就是说,如果一个记录 PtoQ 被映射到“p”和“q”表,其中基于“p”和“q” LEFT OUTER JOIN 有一行,如果进行一个 UPDATE 来修改现有记录中“q”表中数据,那么“q”中行必须存在...也就是说,如果将记录 PtoQ 映射到“p”和“q”表,其中基于“p”和“q” LEFT OUTER JOIN 行,如果进行更新以更改现有记录中“q”表中数据,则“q”中行必须存在;如果主键标识已经存在...这是一种问题传统行为,对于某些后端( Oracle)存在问题 - 在这种情况下,可以将其设置为 False。...这些属性在所有情况下都是与映射或其超关联 Python 描述符。 此命名空间包括映射属性以及由扩展模块声明属性。包括任何从InspectionAttr继承 Python 描述符类型。...在继承场景中,引用继承链中所有其他Mapper对象父级Mapper。 这是在映射器构建期间确定只读属性。如果直接修改,行为未定义。

11810

SqlAlchemy 2.0 中文文档(三十)

通过严格在映射器配置级别解决该问题,并与现有的声明技术完全集成,AutomapBase试图提供一个与问题紧密集成方法,以迅速自动生成临时映射。...然后,我们调用AutomapBase.prepare()在生成上,要求反映模式并生成映射: from sqlalchemy.ext.automap import automap_base from...从现有元数据生成映射 我们可以将预先声明MetaData对象传递给automap_base()。...然后,我们调用 AutomapBase.prepare() 在生成上,要求反映架构并生成映射: from sqlalchemy.ext.automap import automap_base from...重要是要注意,默认关联命名从实际名派生名称。如果您通过声明为特定指定了显式名称,或指定了替代命名方案,则关系名称将从该名称派生。 检查以查找与这些名称匹配现有映射属性。

14710

SqlAlchemy 2.0 中文文档(三十一)

对于所有这些无法检测到类型情况,都将发出一个信息丰富错误消息,在所有情况下,可以明确提供适当类型,要么使用Mapped,要么选择在内联声明中省略。...不具有显式类型列 包含 ForeignKey 修改列在 SQLAlchemy 声明性映射中不需要指定数据类型。...[int] company: Mapped["Company"] 与数据或其他类型敏感属性系统结合 Python 数据集成示例中将 ORM 映射应用到现有数据(旧数据使用)存在一个问题...在我们情况下,这是件好事,因为如果这个字典是可 pickle ,那么它可能会导致我们值对象 pickle 大小过大,因为它们在涉及父对象上下文情况下被单独 pickle。...在我们情况下,这是一件好事,因为如果这个字典是可 pickle ,那么它可能会导致我们值对象 pickle 大小过大,这些值对象是在涉及父对象情况下 pickle

18920

SqlAlchemy 2.0 中文文档(二十四)

在这种情况下,我们必须确保 SQLAlchemy 可以“预执行”默认值,这意味着必须是一个显式 SQL 表达式。...该参数接收一个包含任意 ORM 映射映射层次结构中任意声明基或混合)、`Table`对象和`Mapper`对象字典作为键,然后通常引用`Engine`或不太常见是`Connection...在这种情况下,我们必须确保 SQLAlchemy 可以“预先执行”默认值,这意味着必须是一个明确 SQL 表达式。...在这种情况下,我们必须确保 SQLAlchemy 可以“预执行”默认值,这意味着必须是一个显式 SQL 表达式。...此参数接收一个包含任意组合 ORM 映射映射层次结构中任意声明性基或混合)、Table 对象和Mapper 对象作为键字典,然后通常引用Engine 或较不常见 Connection

23110

SqlAlchemy 2.0 中文文档(三)

在本节中,我们将涵盖 Update 和 Delete 构造,用于修改现有行以及删除现有行。 本节将从核心角度讨论这些构造。...与insert()构造类似,还有一种“传统”update()形式,一次只针对一个表发出 UPDATE,返回任何行。...这使它能够根据给定一组待处理更改,更好地决定如何在事务中发出 SQL DML。当确实向数据库发出 SQL 以推送当前更改集时,该过程被称为刷新。...,即 ORM 如何与引用其他对象映射交互。...在 声明映射 部分,映射示例使用了一种称为 relationship() 构造。此构造定义了两个不同映射之间链接,或者从一个映射自身,后者称为自引用关系。

18020

SqlAlchemy 2.0 中文文档(五十五)

但是目标是映射 Table 或其他 Core 可选择对象,而不是 ORM 实体,映射或aliased()构造: a1 = Address....RemovedIn20Warning弃用警告是该系统基础,用于提供关于现有代码库中需要修改行为指导。如何启用此警告概述在 SQLAlchemy 2.0 弃用模式中。...Table或其他映射 Core 可选择对象,而不是 ORM 实体,映射或aliased()构造: a1 = Address....RemovedIn20Warning废弃警告是该系统基础,提供了关于现有代码库中需要修改行为指导。如何启用此警告概述在 SQLAlchemy 2.0 Deprecations Mode 中。...RemovedIn20Warning 弃用警告是这个系统基础,提供了对现有代码库中需要修改行为指导。关于如何启用此警告概述在 SQLAlchemy 2.0 弃用模式 中。

23210

SqlAlchemy 2.0 中文文档(十九)

映射时配置加载策略 特定关系加载策略可以在映射时配置,以在加载映射类型对象所有情况下发生,即使没有修改任何查询级别选项。...要沿着路径导航而更改特定属性现有加载器样式,请使用 defaultload() 方法/函数: from sqlalchemy import select from sqlalchemy.orm import...当使用查询选项joinedload()、defer()或类似选项时,Load对象在大多数情况下会在幕后隐式使用。除了一些非常特殊情况外,通常不会直接实例化。...如果与对象对应 SQL 基于本类本地属性而是基于其超,则可以在特定上将此标志设置为True。...在映射时间配置加载策略 特定关系加载策略可以在映射时间配置,以在加载映射类型对象所有情况下发生,没有任何修改查询级选项情况下

15310
领券