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

SqlAlchemy 2.0 中文文档(三十三)

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

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

SqlAlchemy 2.0 中文文档(十九)

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

5910

SqlAlchemy 2.0 中文文档(十五)

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

3810

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”级联也适用于多对多关系

6410

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本身“零”实体。

3210

SqlAlchemy 2.0 中文文档(十二)

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

4310

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

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

88920

SqlAlchemy 2.0 中文文档(三)

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

4010

SqlAlchemy 2.0 中文文档(十一)

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

2810

SqlAlchemy 2.0 中文文档(二十四)

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

5010

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 加载操作期间都会被调用。

7020

SqlAlchemy 2.0 中文文档(二十七)

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

4010

SqlAlchemy 2.0 中文文档(四)

请参阅下一节在加载时保持非映射状态了解如何在加载对象时调用特殊逻辑基础知识。 包含显式__init__()方法类将保留该方法,并且不会应用默认构造函数。...提示 命令式映射形式是 SQLAlchemy 在 2006 年最初版本少用一种映射形式。它本质上是绕过声明式系统提供一种更“精简”映射系统,不提供现代特性,PEP 484支持。...警告 类__init__()方法仅在 Python 代码构造对象时调用,而不是在从数据库加载或刷新对象时调用。请参阅下一节在加载过程中保持非映射状态,了解如何在加载对象时调用特殊逻辑入门知识。...== "some name")).first() 这是因为从数据库加载时,用于构造对象操作(在上面的示例为User)更类似于反序列化,取消持久性,而不是初始构造。...警告 当对象在 Python 代码构造时才调用类 __init__() 方法,而不是在从数据库加载或刷新对象时。请参阅下一节在加载时保持非映射状态,了解如何在加载对象时调用特殊逻辑基本知识。

4210

SqlAlchemy 2.0 中文文档(十)

当为True时,指定对由此映射器映射对象应用“传统”孤立考虑,这意味着仅当它从指向此映射器所有解除关联时,即将删除孤立级联挂起(即,非持久性)对象才会自动从所拥有的Session清除。...新默认行为是,当对象与指定了delete-orphan级联任何之一解除关联时,对象会自动从其父清除。此行为与持久性对象行为更一致,并允许行为在更多场景独立于孤立对象是否已刷新。...在非继承场景,此属性始终为此Mapper。在继承场景,它引用继承链中所有其他Mapper对象Mapper。 这是在映射器构建期间确定只读属性。如果直接修改,行为未定义。...method common_parent(other: Mapper[Any]) → bool 如果给定映射器与此映射器共享一个共同继承,则返回 true。...共同但不同分支 method isa(other: Mapper[Any]) → bool 如果此映射器从给定映射器继承,则返回 True。

5510
领券