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

SqlAlchemy 2.0 中文文档(十八)

作为在访问时进行惰性加载的替代方法,延迟还可以配置在访问时引发信息异常,而不考虑它们的附加状态。...with_expression() 作为对象加载选项,仅对查询的最外层部分以及对完整实体的查询起作用,而不适用于任意选择、查询或复合语句的元素,比如 UNION。...如果在 select() 中使用,而后将其用作查询作为复合语句中的元素,如 UNION,它将不起作用。 要在查询中使用任意 SQL 表达式,应使用常规的 Core 风格添加表达式的方法。...with_expression() 作为对象加载选项,只对查询的最外层部分生效,并且仅适用于对完整实体进行的查询,而不适用于查询中的任意选择或复合语句(如 UNION)的元素。...如果在将用作查询作为联合等复合语句中的元素的`select()`内部使用,则不会产生任何效果。 为了在查询中使用任意的 SQL 表达式,应该使用正常的 Core 风格添加表达式的方法。

12610

SqlAlchemy 2.0 中文文档(十五)

当 DISTINCT 降低内层查询的性能超出重复的内层行可能导致的性能时,将此标志设置 False 可能是合适的。 另请参阅 关系加载技术 - 包括对子查询加载的介绍。...subquery - 项目应该在父项加载时“急切”加载,使用一个额外的 SQL 语句,每个请求的集合发出一个 JOIN 到原始语句的查询。...使用通配符取消延迟加载 配置映射器级别的“raiseload”行为 将任意 SQL 表达式加载到对象上 使用 with_expression() 加载 UNIONs、其他查询 加载...API 查询对象 查询 ORM 特定的查询构造 ORM 映射编写 SELECT 语句 原文:docs.sqlalchemy.org/en/20/orm/queryguide/select.html...;查询返回的与实体映射的之间必须存在对应关系,这意味着查询最终需要来自这些实体,就像下面的示例中一样: >>> inner_stmt = select(User).where(User.id

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

SqlAlchemy 2.0 中文文档(二十)

当使用集合时,yield_per执行选项与“查询”急加载加载或“连接”急加载不兼容。如果数据库驱动程序支持多个独立游标,则它可能与“选择内”急加载兼容。...attribute single_entity = False 如果 True,则单个 Bundle 的查询作为单个实体返回,而不是作为键控元组中的元素。...with_loader_criteria() 选项旨在向查询中的特定类型的实体添加限制条件,全局地,这意味着它将应用于实体在 SELECT 查询中的出现方式以及任何查询、连接条件和关系加载中,包括急切加载和延迟加载器...with_loader_criteria()选项旨在向查询中的特定实体添加限制条件,全局地应用于实体在 SELECT 查询中的出现以及任何查询、连接条件和关系加载中,包括急切加载和延迟加载器,而无需在查询的任何特定部分指定它...polymorphic_on - 作为多态加载的“鉴别器”使用的替代或 SQL 表达式。

6710

SqlAlchemy 2.0 中文文档(二十一)

此处的方法接受映射、aliased() 构造和 Mapper 构造作为参数,这些参数会被解析表达式构造,以及适当的表达式构造。...实体可以是映射、AliasedClass对象、Mapper对象,以及核心FromClause元素,如查询。...表示此查询的语句访问器应返回一个 SELECT 语句,该语句将标签应用于形式_的所有;这通常用于消除具有相同名称的多个表中的的歧义。 当查询实际发出 SQL 以加载行时,它总是使用标签。...property – 表示应使用实例哪个关系来协调父/关系的绑定属性。 from_entity – 要考虑左侧的实体。默认为Query本身的“零”实体。...此处的方法接受映射、aliased() 构造和 Mapper 构造作为参数,它们会被解析表达式构造,以及适当的表达式构造。

13810

SqlAlchemy 2.0 中文文档(十六)

属性的加载可配置以多种方式更“急切”,在本节后面讨论。 下面的示例创建了针对 Employee 超查询。...selectinload()接受作为其参数的基本实体,该实体正在被查询,然后是该实体的子类序列,对于这些子类,应为传入的行加载其特定属性: >>> from sqlalchemy.orm import...selectable – 将用于替代生成的 FROM 子句的表或查询。如果任何所需使用具体表继承,则此参数是必需的,因为 SQLAlchemy 当前无法自动生成表之间的 UNION。...属性的加载可配置以各种方式更加“急切”,这将在本节后面讨论。 下面的示例创建了针对Employee超查询。...polymorphic_on – 作为给定可选择对象的“鉴别器”使用的。如果未给出,则将使用基的 mapper 的 polymorphic_on 属性(如果有)。

11210

SqlAlchemy 2.0 中文文档(十二)

SQLAlchemy 的连接和查询急切加载在连接到相关项时在所有情况下使用别名表,因此与自引用连接兼容。...SQLAlchemy 的连接和查询急切加载在加入相关项时始终使用别名表,因此与自引用连接兼容。...在下面的示例中,我们使用 User 以及存储街道地址的 Address 来创建一个关系 boston_addresses,它将仅加载指定城市“波士顿”的 Address 对象: from sqlalchemy...务必查看节自引用查询策略和配置自引用急切加载,这两者同样适用于此处讨论的映射模式。...也就是说,在执行每个属性的惰性加载的 SQL 语句中使用它,或者在查询时构造连接,例如通过 Select.join() 或通过急切的“连接”或“查询加载样式。

7910

SqlAlchemy 2.0 中文文档(四)

语句 启用 ORM 的 INSERT、UPDATE 和 DELETE 语句 加载选项 关系加载技术 用于查询的 ORM API 功能 遗留查询 API 使用会话...访问表和元数据 声明性表配置 使用声明性表的显式模式名称 声明式映射的设置加载和持久化选项 显式命名声明式映射 将额外添加到现有的声明式映射 使用命令式表进行声明式...具体继承关系的关系 加载具体继承映射 非传统映射 将映射到多个表 将映射到任意查询 一个的多个映射器 配置版本计数器 简单版本计数 自定义版本计数器...这种映射风格是“声明式”和“命令式”映射的混合,并适用于将映射到反射的 Table 对象,以及将映射到现有的 Core 构造,如连接和查询。...这种映射风格是“声明式”和“命令式”映射的混合体,并适用于将映射到反射的Table对象,以及将映射到现有 Core 构造,如连接和查询

9410

Flask数据库过滤器与查询

下面列出了一些常用选项: primary_key:如果设置True,这就是表的主键 unique:如果设置True,这不允许出现重复的值 index:如果设置True,创建索引,提升查询效率...default:定义默认值 一对多关系 最为常见的关系就是一对多关系,因为关系在它们建立之前就已经声明。...大多数情况下,db.relationship()都能自行找到关系中的外键,但有时却无法决定把哪一作为外键。...例如如果address模型中有两个或以上的定义person模型的外键,SQLAlchemy就不知道该使用哪。...可选值有 select(首次访问时按需加载)、immediate(源对象加载后就加载)、 joined(加载记录,但使用联结)、 subquery (立即加载,但使用查询),noload(永不加载)和

6.8K10

SqlAlchemy 2.0 中文文档(八)

这在某些情况下优于使用混合的用法,因为该值可以在对象的父行加载时一次性加载,特别是如果表达式是链接到其他表(通常作为相关子查询)以访问通常不会在已加载对象上可用的数据的情况。...映射属性中的查询时 SQL 表达式 除了能够在映射上配置固定的 SQL 表达式之外,SQLAlchemy ORM 还包括一个功能,可以在查询时将对象加载任意 SQL 表达式的结果,并将其设置其状态的一部分...在某些情况下,这比使用混合的优势更大,因为值可以在与对象的父行同时加载的同时前置加载,特别是如果表达式是链接到其他表的(通常作为关联查询)以访问在已加载对象上通常不可用的数据。...查询时 SQL 表达式作为映射属性 除了能够在映射上配置固定的 SQL 表达式之外,SQLAlchemy ORM 还包括一个功能,即对象可以使用在查询时设置其状态的任意 SQL 表达式的结果进行加载...group – 标记为延迟加载时,此属性的组名。 deferred – 当 True 时,属性“延迟加载”,意味着它不会立即加载,而是在首次访问实例上的属性时加载

11510

SqlAlchemy 2.0 中文文档(二十五)

通常,每个包含与上一行不同的 NULL 值组合的集必须从渲染的 INSERT 语句中省略不同的系列,这意味着必须作为单独的语句发出。...如果 SessionTransaction.nested 属性 True,则这是一个 SAVEPOINT,如果 False,表示这是一个事务。...限制哪些延迟加载)并且尚未加载加载此对象的查询中不存在,例如,在连接表继承和其他场景中常见的情况下。...如果 SessionTransaction.nested 属性 True,则这是一个保存点,如果 False,则表示这是一个事务。...这包括: 通过Session.expire()过期 作为提交会话事务的自然效果而过期,例如Session.commit() 通常是延迟加载,但目前尚未加载 被“延迟加载”(参见限制加载延迟

8410

SqlAlchemy 2.0 中文文档(十一)

使用多对多的“次要”参数进行延迟评估 邻接列表关系 复合邻接列表 自引用查询策略 配置自引用急加载 配置关系连接方式 处理多个连接路径 指定备用连接条件...将别名映射与类型化集成并避免早期映射器配置 在查询中使用别名类目标 使用窗口函数进行行限制关系 构建支持查询的属性 关于使用 viewonly 关系参数的注意事项...向现有集合添加新项目 查询项目 删除项目 批量插入新项目 项目的批量更新和删除 只写集合 - API 文档 动态关系加载器 动态关系加载器 - API...假设数据库支持这个特性,数据库本身可以被设置在“”中的引用行被删除时自动删除“次要”表中的行。...,该将接收NULL作为其值。

8310

Flask_数据库

选项 选项名 说明 primary_key 如果True,代表表的主键 unique 如果True,代表这不允许出现重复的值 index 如果True,创建索引,提高查询效率 nullable...如果True,允许有空值,如果False,不允许有空值 default 定义默认值 SQLAlchemy 关系选项 选项名 说明 backref 在关系的另一模型中添加反向引用 primary...(一方的名) 第二个参数backref USer申明新属性的方法 第三个参数 lazy 决定了什么时候SQLAlchemy 从数据库中加载数据 如果设置查询方式(subquery),则会在加载完...Role对象后,就立即加载与其关联的对象,这样会让总查询数量减少,但如果返回的条目数量很多,就会比较慢 设置 subquery 的话,role.users 返回所有数据列表 另外,也可以设置动态方式...(dynamic),这样关联对象会在被使用的时候再进行加载,并且在返回前进行过滤,如果返回的对象数很多,或者未来会变得很多,那最好采用这种方式 设置 dynamic 的话,role.users 返回查询对象

1.3K50

SqlAlchemy 2.0 中文文档(九)

层次结构中特定子类的查询作为 SQL JOIN 在其继承路径上的所有表之间进行。如果查询是基,则查询基表,同时可以选择包含其他表或允许后续加载特定于子表的属性的选项。...联接继承层次结构中的基将配置具有指示多态鉴别器以及可选地本身配置的多态标识符的其他参数: from sqlalchemy import ForeignKey from sqlalchemy.orm...加载具体继承映射 具体继承加载选项有限;通常,如果在映射器上配置了多态加载,使用其中一个声明性具体混合,就不能在当前 SQLAlchemy 版本中在查询时修改它。...在层次结构中查询特定子类将作为 SQL JOIN 渲染其继承路径上的所有表。如果查询是基,则将查询基表,同时可以选择包括其他表或允许特定于子表的属性稍后加载。...加载具体继承映射 具体继承加载选项有限;一般来说,如果在映射器上配置了多态加载,使用其中一个声明性的具体混合,那么在当前的 SQLAlchemy 版本中它就不能在查询时进行修改。

10710

Flask入门第三天

选项 primary_key:如果True,代表表的主键 unique:如果True,代表这不允许出现重复的值 index:如果True,创建索引,提高查询效率 nullable:如果...True,允许有空值,如果False,不允许有空值 default:定义默认值   2.4 常用的SQLALchemy关系选项 backref:在关系的另一模型中添加反向引用,用于设置外键名称,...在此文中,第一个参数对应参照的"User" 第二个参数backrefUser申明新属性的方法 第三个参数lazy决定了什么时候SQLALchemy从数据库中加载数据 如果设置查询方式(subquery...),则会在加载完Role对象后,就立即加载与其关联的对象,这样会让总查询数量减少,但如果返回的条目数量很多,就会比较慢 设置 subquery 的话,role.users 返回所有数据列表 另外,也可以设置动态方式...(dynamic),这样关联对象会在被使用的时候再进行加载,并且在返回前进行过滤,如果返回的对象数很多,或者未来会变得很多, 那最好采用这种方式 设置 dynamic 的话,role.users 返回查询对象

2.7K20

SqlAlchemy 2.0 中文文档(二)

我们使用 SQL **别名** 来实现这一点,这是一种表或查询提供替代名称的语法,可以在语句中引用它。...- 在 ORM 查询指南 ## 标量和相关子查询 标量子查询是一个返回零行或一行且一查询。...这与在 ORM 实体查询/CTEs 中引入的方式相同,首先创建我们想要的实体到查询的临时“映射”,然后从新实体中选择,就像它是任何其他映射一样。...- 在 ORM 查询指南 中 标量和关联查询 标量子查询是返回零行或一行以及一查询。...这与 ORM 实体查询/ CTEs 中介绍的方式相同,首先创建我们所需实体到查询的临时“映射”,然后从该新实体中选择,就像它是任何其他映射一样。

14010

SqlAlchemy 2.0 中文文档(二十八)

如果使用,应该使用适当的加载器选项来deferred()进行延迟加载,除了上面注意到的relationship()结构。...此混合所有添加一个新属性 AsyncAttrs.awaitable_attrs ,它将任何属性的值作为可等待返回。...如果在deferred()中使用了适当的加载选项,应该使用适当的加载选项,此外还应该注意relationship()结构。请参见限制使用延迟加载以获取关于延迟加载的背景信息。...如果使用deferred(),应该使用适当的加载器选项,除了如上所述的relationship()构造。有关延迟加载的背景,请参阅限制使用延迟加载。...代表AsyncSession的Session的代理。 标记实例的属性过时。下次访问过期的属性时,将在Session对象的当前事务上下文中发出查询,以加载给定实例的所有过期属性。

17710
领券