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

SqlAlchemy 2.0 中文文档(三十三)

: directed_graph.py ### 作为字典动态关系 演示如何在“动态”关系之上放置类似字典外观,以便字典操作(假设简单字符串键)可以在不一次加载完整集合情况下操作大集合。...) 文件清单: directed_graph.py ### 动态关系作为字典 展示了如何在“动态”关系之上放置类似字典外观,以便字典操作(假设简单字符串键)可以在一次加载完整集合情况下操作大型集合。...: directed_graph.py 动态关系作为字典 演示了如何在“动态”关系之上放置类似于字典外观,以便字典操作(假设简单字符串键)可以在大型集合上进行操作,而无需一次加载整个集合。...relationship_caching.py - 展示了如何在关系终点添加缓存选项,以便惰性加载从缓存中加载。...+ relationship_caching.py - 展示了如何在关系终点添加缓存选项,以便惰性加载从缓存中加载

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

SqlAlchemy 2.0 中文文档(十九)

它通过将 JOIN(默认为 LEFT OUTER join)连接到发出 SELECT 语句,并且从与相同结果集中填充目标标量/集合来工作。...“子查询”加载与由 Yield Per 提供批量加载(对集合和标量关系均适用)不兼容。 出于上述原因,“selectin”策略应优先于“子查询”。...由此自然地可以选择修改要存储在集合值,通过编写 SQL 来加载集合或标量属性子集。...**kw 可能包含更改返回集合标志,例如返回子集以减少更大遍历,或者返回来自不同上下文子项(例如模式集合而不是子句集合)。...**kw 可能包含更改返回集合标志,例如返回子项子集以减少较大遍历,或者从不同上下文返回子项(例如模式集合而不是从子句返回)。

13610

SqlAlchemy 2.0 中文文档(十五)

当“更新”不再“被动”时,这表示 SQLAlchemy 将为引用具有更改主键值对象集合对象单独发出 UPDATE 语句。这也意味着如果集合尚未在本地存在,那么集合将完全加载到内存。...另请参阅 关系 X 将列 Q 复制到列 P,与关系‘Y’冲突 - 用法示例 cascade – 一个逗号分隔级联规则列表,确定 Session 操作应该如何从父到子进行“级联”。...join_depth – 当非None时,表示“急切”加载器应该在自引用或循环关系上连接多少深度整数值。该数字计算相同 Mapper 在加载条件沿着特定连接分支出现次数。...但请注意,SQLAlchemy 无法 对超过一级联发出 UPDATE。...这对于快速限制特定关系路径上连接范围方式以及配置加载策略(joinedload()和selectinload())非常有用。

11010

SqlAlchemy 2.0 中文文档(二十三)

在某些情况下,被孤立对象仍然可能被拉入原Session;这是为了使刷新过程可以适当地处理相关对象。...SQLAlchemy 允许使用 ForeignKey 和 ForeignKeyConstraint 构造配置这些模式 DDL 行为;如何在 Table 元数据与这些对象使用一起配置,在 ON UPDATE...当处理一个与对象“拥有”关系相关对象时,这是一种常见特性,该关系具有 NOT NULL 外键,因此从父集合删除项目会导致其被删除。...它不适用于“批量”删除,这将使用delete()构造来发出, ORM UPDATE and DELETE with Custom WHERE Criteria 中所示。...### 使用外键 ON DELETE 处理多对多关系 使用级联删除处理多对多关系 中所述,“delete”级联也适用于多对多关系

12810

SqlAlchemy 2.0 中文文档(二十)

propagate_to_loaders - 默认为 True,适用于关系加载器,延迟加载器。这表示选项对象本身包括 SQL 表达式随每个加载实例一起传递。...当使用 yield_per 时,ORM 将会将 ORM 结果批量子集合,并在迭代 Result 对象时单独从每个子集合中产生行,这样 Python 解释器就不需要声明非常大内存区域,这既耗时又导致内存使用过多...property – 类绑定属性,表示应该使用实例哪种关系来协调/子关系。 from_entity – 要考虑为左侧实体。默认为 Query 本身“零”实体。...propagate_to_loaders – 默认为 True,适用于关系加载器,惰性加载器。这表示选项对象本身,包括 SQL 表达式,将随每个加载实例一起传递。...property – 类绑定属性,指示应使用实例哪个关系来协调/子关系。 from_entity – 要考虑为左侧实体。默认为Query本身“零”实体。

10810

SqlAlchemy 2.0 中文文档(五十四)

何在给定映射类情况下获取所有列、关系、映射属性等列表?...基于列属性可以在映射中被赋予任何所需名称。请参阅明确命名声明式映射列。 如何在给定一个映射类情况下获取所有列、关系、映射属性等列表? 所有这些信息都可以从 Mapper 对象获得。...如何在 ORM 查询中使用文本 SQL? 调用 Session.delete(myobject) 后,我对象未从父集合移除! 加载对象时为什么不调用我 __init__()?...为了做到这一点,它必须获取主对象主键在每个子条目中重复行。这种模式可以继续到更深层子集合,以便为单个主对象(User(id=5))处理多行。...为了做到这一点,它必须获取重复了主导对象主键行,以便每个子条目。这种模式可以继续到更进一步子集合,以便为单个主导对象,User(id=5),处理多行。

7010

SqlAlchemy 2.0 中文文档(十二)

['subchild1', 'child2'] ```## 配置自引用急切加载 在正常查询操作期间,通过从父表到子表连接或外连接来发生关系急切加载,以便可以从单个 SQL 语句或所有子集第二个语句中填充对象及其直接子集合或引用...然而,要使用自引用关系进行急切加载SQLAlchemy 需要告知应该连接和/或查询多少深度;否则,急切加载将根本不会发生。...['subchild1', 'child2'] 配置自引用关系急切加载 通过在正常查询操作期间从父表到子表使用连接或外连接来进行关系急切加载,以便可以从单个 SQL 语句或所有直接子集第二个语句中填充表及其直接子集合或引用...然而,要想使用自引用关系急切加载,需要告诉 SQLAlchemy 应该加入和/或查询多少深度;否则,急切加载将根本不会发生。...relationship()查找此外键状态,因为它决定了它应该如何加载和持久化此关系数据。然而,relationship.primaryjoin参数可以用来创建不涉及任何“架构”外键连接条件。

10510

SqlAlchemy 2.0 中文文档(三)

当需要影响大量行而无需构建和操作映射对象时,这种用法尤为重要,因为对于简单、性能密集型任务,批量插入,这可能是繁琐和不必要。...当需要影响大量行而无需构造和操作映射对象时,此使用模式尤为重要,因为对于简单、性能密集任务(大型批量插入),构造和操作映射对象可能会很麻烦和不必要。...- 在关系加载技术 联合加载 joinedload() 立即加载策略是 SQLAlchemy 中最古老立即加载器,它通过将传递给数据库 SELECT 语句与 JOIN(取决于选项可能是外连接或内连接...请参阅 使用 raiseload 防止不必要惰性加载 - 在关系加载技术 Selectin Load 在现代 SQLAlchemy 中最有用加载器是 selectinload() 加载器选项。...- 在关系加载技术 加载连接 joinedload() 预加载策略是 SQLAlchemy 中最古老加载器,它通过在传递给数据库 SELECT 语句中添加 JOIN(根据选项可能是外连接或内连接

16420

Flask 学习-78.Flask-SQLAlchemy 一对多关系

前言 一个人有多个收件地址,这就是一对多关系 一对多(one-to-many)关系 关系使用 relationship() 函数表示。...这个函数返回一个可以做许多事情新属性。在本案例,我们让它指向 Address 类并加载多个地址。它如何知道会返回不止一个地址? 因为 SQLALchemy 从您声明猜测了一个有用默认值。...lazy 决定了 SQLAlchemy 什么时候从数据库中加载数据: ‘select’ (默认值) 就是说 SQLAlchemy 会使用一个标准 select 语句必要时一次加载数据。...‘joined’ 告诉 SQLAlchemy 使用 JOIN 语句作为在同一查询加载关系。 ‘subquery’ 类似 ‘joined’ ,但是 SQLAlchemy 会使用子查询。...‘dynamic’ 在有多条数据时候是特别有用。不是直接加载这些数据,SQLAlchemy 会返回一个查询对象,在加载数据前您可以过滤(提取)它们。

93620

SqlAlchemy 2.0 中文文档(十一)

创建和持久化新只写集合 向现有集合添加新项目 查询项目 删除项目 批量插入新项目 项目的批量更新和删除 只写集合 - API 文档 动态关系加载器 动态关系加载器...另见 关联代理 - 允许和子之间进行直接“多对多”样式访问,用于三类关联对象映射。...此评估可用完整命名空间包括为此声明基类映射所有类,以及sqlalchemy内容,包括表达式函数desc()和sqlalchemy.sql.functions.func: class Parent...这种行为在删除孤儿描述。 另请参阅 删除 使用 ORM 关系外键 ON DELETE 级联 删除孤儿 多对一 多对一在表中放置了一个引用子表外键。...在这个评估可用完整命名空间包括为这个声明基类映射所有类,以及sqlalchemy内容,包括表达式函数desc()和sqlalchemy.sql.functions.func: class Parent

11210

SqlAlchemy 2.0 中文文档(二十四)

此标志用于诸如从二缓存传输对象图到Session,或将刚加载对象传输到工作线程或进程拥有的Session而无需重新查询数据库情况。...如果惰性加载关系不在 Session.refresh.attribute_names 命名,则它们将保持为“惰性加载”属性,并且不会隐式刷新。...此标志用于将对象图转移到来自第二缓存Session,或者将刚加载对象转移到由工作线程或进程拥有的Session,而无需重新查询数据库。...如果惰性加载关系未在 Session.refresh.attribute_names 命名,则它们将保持为“惰性加载”属性,不会被隐式刷新。...如果惰性加载关系未在 Session.refresh.attribute_names 命名,则它们将保持为“惰性加载”属性,不会被隐式刷新。

21410

SqlAlchemy 2.0 中文文档(五十八)

参考:#10279 [orm] [bug] 为 selectin_polymorphic() 加入了新功能,允许其他加载器选项被捆绑为同级,并且引用其子类一个,位于加载器选项子选项。...作为这个改变一部分,改进了Load.selectin_polymorphic() 方法/加载策略行为,因此子类加载不会加载来自大多数已加载列,当选项用于已经进行关系加载类时。...如果刷新操作没有指示要刷新行上任何列,则主键列仍将包括在刷新操作,这允许加载继续到正常情况下指示次要关系加载器。...作为此更改一部分,改进了Load.selectin_polymorphic()方法/加载策略行为,因此在对已经关系加载类使用该选项时,子类加载不会加载加载大多数列。...作为这一变化一部分,改进了 Load.selectin_polymorphic() 方法/加载器策略行为,以便在已经对表进行关系加载时,子类加载不会加载大部分已加载列。

5810

SqlAlchemy 2.0 中文文档(三十一)

可以使用 pip 使用“mypy”额外钩子安装 Mypy: pip install sqlalchemy[mypy] 插件本身 Configuring mypy to use Plugins 描述那样配置...映射关系 该插件对使用类型推断来检测关系类型有限支持。...class sqlalchemy.ext.mutable.Mutable 定义透明传播更改事件到对象混入。 查看在标量列值上建立可变性示例以获取用法信息。...根据类是Mutable类型还是MutableComposite类型,在不同情况下调用此方法。对于前者,在属性设置操作和 ORM 加载操作期间都会调用它。...根据类是Mutable类型还是MutableComposite类型,在不同情况下调用此方法。对于前者,它在属性集操作和 ORM 加载操作期间都会被调用。

18520

SqlAlchemy 2.0 中文文档(二十七)

如果值尚未加载,或者在对象字典不存在,则返回 NO_VALUE。 attribute value 返回此属性值。...在 SQLAlchemy 1.0 ,这仅用于通过查询选项设置延迟加载器/延迟加载器。 以前,可调用函数还用于通过在此字典存储与 InstanceState 本身链接来指示过期属性。...Mapped最突出用途是在声明式映射形式Mapper配置,当显式使用时,它驱动 ORM 属性(mapped_class()和relationship())配置。...一些后端, PostgreSQL 和 MariaDB,可能会将标志作为模式一部分来指定。 1.4 版新功能。...与标量一对多相比,将生成一个子句,比较目标列与给定目标。 与标量多对多相比,关联表别名也将被渲染,形成一个自然连接,作为查询主体一部分。

19610
领券