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

SqlAlchemy 2.0 中文文档(二)

然后,该查询包含 SELECT 语句 COLUMNS 或 WHERE句中使用,并且与常规查询不同之处在于它不在 FROM 子句中使用。...结果显示了一系列User和Address对象,其中每个Address对象数据最终来自address表查询不是直接来自该表: >>> subq = select(Address).where(...结果显示了一系列 User 和 Address 对象,其中每个 Address 对象数据最终来自于 address 表查询不是直接来自该表: >>> subq = select(Address...然后,封闭 SELECT 语句 COLUMNS 或 WHERE句中使用查询,它与常规查询不同,因为它不在 FROM 子句中使用。...某些类别的函数返回整行不是值,需要引用特定情况下;这些函数被称为表值函数。

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

SqlAlchemy 2.0 中文文档(十八)

使用推迟限制加载 推迟 指的是查询该类型对象时,从 SELECT 语句中省略 ORM 映射。...with_expression() 作为对象加载选项,仅对查询最外层部分以及完整实体查询起作用,不适用于任意选择、查询或复合语句元素,比如 UNION。...] (4,) 可以一条语句中使用多个defer()选项,以将多个标记为延迟加载。 与load_only()一样,defer()选项也包括将延迟属性访问时引发异常不是惰性加载能力。...with_expression() 作为对象加载选项,只对查询最外层部分生效,并且仅适用于完整实体进行查询不适用于查询任意选择或复合语句(如 UNION)元素。...如果在将用作查询或作为联合等复合语句中元素`select()`内部使用,则不会产生任何效果。 为了查询使用任意 SQL 表达式,应该使用正常 Core 风格添加表达式方法。

12410

SqlAlchemy 2.0 中文文档(三十七)

当覆盖内置 SQL 结构编译时,@compiles 装饰器会调用适当类(确保使用类,即 Insert 或 Select,不是创建函数,比如 insert() 或 select())。...你 SELECT 语句”子句中(以及 order by 和 group by)放置任何东西都可以从这个派生 - 该对象将自动具有 Python “比较”行为。...结构引用映射器、表、、会话等序列化形式中不会被持久化,而是反序列化时重新关联到查询结构。...序列化器模块仅适用于查询结构。不需要: 用户定义类实例。典型情况下,这些类不包含引擎、会话或表达式构造引用,因此可以直接序列化。...如果对应于对象 SQL 不根据此类本地属性(不是其超类)更改,则可以特定类上将此标志设置为 True。

14210

SqlAlchemy 2.0 中文文档(二十一)

对于特定进行精细控制计数,跳过查询使用或以其他方式控制 FROM 子句,或使用其他聚合函数,可以结合使用expression.func表达式和 Session.query(),例如: from...如果返回多个对象标识,或者对于仅返回标量值不是完全映射实体查询返回多行,则引发 sqlalchemy.orm.exc.MultipleResultsFound。...如果返回多个对象标识,或者如果对于返回标量值不是完整标识映射实体查询返回多行,则引发sqlalchemy.orm.exc.MultipleResultsFound。...如果不是,ObjectDeletedError 被引发。 Query.get() 仅用于返回单个映射实例,不是多个实例或单个构造,并且严格地基于单个主键值。...如果返回多个对象标识,或者如果返回多行用于仅返回标量值不是完整身份映射实体查询,则引发sqlalchemy.orm.exc.MultipleResultsFound。

13110

SqlAlchemy 2.0 中文文档(十五)

ON UPDATE CASCADE,没有外键支持 使用不支持引用完整性数据库,并且使用具有可变值自然主键时,SQLAlchemy 提供了一个功能,允许将主键值传播到引用外键到有限程度,通过针对立即引用主键外键发出...SQLAlchemy 2.0 中新 PEP 484 特性还利用了属性源代码中明确存在不是使用动态属性生成。...;查询返回与实体映射之间必须存在对应关系,这意味着查询最终需要来自这些实体,就像下面的示例中一样: >>> inner_stmt = select(User).where(User.id...,该查询可以通过将其组织成查询使用 aliased() 将其链接到 ORM 实体来进一步修改,如 从子查询中选择实体 中说明。...包含跨越多个 ORM 实体查询可以同时应用于多个aliased()构造,并且每个实体情况下都可以相同Select构造中使用

8610

SqlAlchemy 2.0 中文文档(三十六)

注意 使用 Python 可调用函数 Python 端默认值仅在整个语句中被调用一次,不是每行一次。 method inline() → Self 使此 Insert 构造“内联”。...当设置时,通过default关键字Column对象上存在 SQL 默认值将被‘内联’编译到语句中不是预先执行。...注意 使用 Python 可调用函数 Python 端默认值将仅在整个语句中被调用 一次,不是每行一次。 method inline() → Self 将此 Insert 构造“内联”。...joins_implicitly - 当为 True 时,可以 SQL 查询 FROM 子句中使用表值函数,而无需其他表进行显式 JOIN,并且不会生成“笛卡尔积”警告。...joins_implicitly – 当为 True 时,可以 SQL 查询 FROM 子句中使用表值函数,而无需其他表进行显式 JOIN,并且不会生成“笛卡尔积”警告。

12510

SqlAlchemy 2.0 中文文档(一)

为了使 SQL 语句保持不变,以便驱动程序可以正确地值进行处理,我们句中添加了一个名为“y” WHERE 条件;text()构造函数接受这些参数,使用冒号格式“:y”。...Insert 构造,并执行它不是打印它,语句将根据我们传递给Connection.execute() 方法参数编译为一个字符串,而且只包含与传递参数相关。...一个 标量子查询 被构建,利用了下一节中介绍 select() 结构,查询使用参数使用明确绑定参数名设置,使用了 bindparam() 结构。...()Insert构造进行执行不是打印它,该语句将根据我们传递给Connection.execute()方法参数编译为一个字符串,并且仅包括与传递参数相关。...构造了一个标量子查询,利用了下一节中介绍select()构造,并且查询使用参数使用了显式绑定参数名称,使用bindparam()构造建立。

10910

SqlAlchemy 2.0 中文文档(三)

Krabs')]) 上述视图使用一个名为IdentitySet集合,它本质上是一个 Python 集合,在所有情况下都使用对象标识哈希(即使用 Python 内置id()函数,不是 Python...这类似于使用 ORM 工作单元模式插入行中观察到行为,在那里我们观察到,我们没有明确为其分配值基于属性也会自动显示为None,不是Python 通常行为一样引发AttributeError...它使用一种 SELECT 形式,大多数情况下可以针对相关表单独发出,不需要引入 JOIN 或查询,并且仅查询那些集合尚未加载父对象。...这类似于 使用 ORM 工作单元模式插入行 中注意到行为,即我们没有明确为其分配值基于属性也会自动显示为 None,不是Python 通常行为那样引发 AttributeError。...它使用 SELECT 形式大多数情况下可以只针对相关表发出,不需要引入 JOIN 或查询,并且仅查询那些尚未加载集合父对象。

11010

SqlAlchemy 2.0 中文文档(十九)

user: Mapped[User] = relationship(lazy="joined") 连接预加载通常作为查询选项应用,不是作为映射默认加载选项,特别是在用于集合不是一引用时。...这种加载样式发出一个 SELECT,该 SELECT 引用父对象主键值,或者多关系情况下引用对象主键值,以便在 IN 子句中加载相关联关系: >>> from sqlalchemy import...查询本身也可能因为所使用数据库具体情况产生性能惩罚。 “查询”加载正确工作时会施加一些特殊排序要求。...user: Mapped[User] = relationship(lazy="joined") 连接式急加载通常作为查询选项应用,不是作为映射默认加载选项,特别是当用于集合不是一引用时。...这种加载样式发出一个 SELECT,该 SELECT 引用父对象主键值,或者多关系情况下引用对象主键值,位于 IN 子句中,以加载相关联关系: >>> from sqlalchemy import

11010

SqlAlchemy 2.0 中文文档(十二)

SQLAlchemy 连接和查询急切加载加入相关项时始终使用别名表,因此与自引用连接兼容。...要添加涉及A.b关系额外条件,通常需要直接引用B_viacd,不是使用B,特别是A.b目标实体要转换为别名或查询情况下。...也就是说,执行每个属性惰性加载 SQL 语句中使用它,或者查询时构造连接,例如通过 Select.join() 或通过急切“连接”或“查询”加载样式。...要添加涉及 A.b 关系附加条件,通常需要直接引用 B_viacd 不是使用 B,特别是将 A.b 目标实体转换为别名或查询情况下。...要添加涉及 A.b 关系额外条件,通常需要直接引用 B_viacd 不是使用 B,特别是目标实体 A.b 需要转换为别名或查询情况下。

7710

SqlAlchemy 2.0 中文文档(二十七)

=1) 版本 1.4 中更改:在所有情况下,空 IN 表达式现在使用执行时生成 SELECT 查询。...与标量多多相比,关联表别名也将被渲染,形成一个自然连接,作为查询主体一部分。这对于超出简单 AND 比较查询不起作用,例如使用 OR 查询。...与标量多多相比,关联表别名也将被呈现,形成查询主体一部分自然连接。这不适用于超出简单 AND 比较查询,例如使用 OR 查询。...关联表将呈现在语句中,生成一个“隐式”联接,即, WHERE句中包括多个表: query(MyClass).filter(MyClass.contains(other)) 生成查询类似于: SELECT...在这种情况下,需要使用查询或显式“外连接”。

10510

SqlAlchemy 2.0 中文文档(十六)

使用此方法将确保每个后代映射器表都包含在 FROM 子句中,并允许这些表使用 filter() 条件。结果实例还将加载这些,因此不需要对这些进行“后获取”。...flat – 布尔值,将传递给FromClause.alias()调用,以便联接对象别名别名联接内部各个表,不是创建查询。这通常由所有现代数据库支持,关于右嵌套联接通常会产生更有效查询。...使用这种方法将确保每个子类映射器表都包含在 FROM 子句中,并允许这些表使用 filter()条件。结果实例也将已经加载了那些,因此不需要对这些进行“后获取”。...flat – 布尔值,将被传递到 FromClause.alias() 调用,以便 Join 对象别名将别名为加入内各个表,不是创建查询。...flat – 布尔值,将被传递到 FromClause.alias() 调用,以便 Join 对象别名将别名为加入内各个表,不是创建查询

11010

SqlAlchemy 2.0 中文文档(二十四)

将 SQL 插入/更新表达式嵌入到刷新中 此功能允许将数据库值设置为 SQL 表达式不是文字值。...render_nulls – 当设置为 True 时,None 值将导致 NULL 值包含在 INSERT 语句中不是从 INSERT 中省略。...如果映射涉及多个表,比如联接继承映射,则每个字典可能包含所有表对应键。所有这些存在且不是主键键都将应用于 UPDATE 语句 SET 子句;所需主键值将应用于 WHERE 子句。...render_nulls – 当为 True 时,None 值将导致 NULL 值被包含在 INSERT 语句中不是从 INSERT 中省略该。...populate_existing – 导致该方法无条件发出 SQL 查询,并使用新加载数据刷新对象,不管对象是否存在。

13410

SqlAlchemy 2.0 中文文档(十三)

当 Query 对象被要求返回完整实体时,将根据主键条目进行去重,这意味着如果相同主键值结果中出现多次,则仅存在一个该主键对象。这不适用于针对个别查询。...若要对特定进行精细化计数控制,跳过查询使用或以其他方式控制 FROM 子句,或使用其他聚合函数,请将 expression.func 表达式与 Session.query() 结合使用,例如: from....> 上述语句自动使用“UPDATE…FROM”语法, SQLite 和其他支持数据库中, WHERE句中命名附加audit_transaction表。...要对特定进行精细化控制以进行计数,跳过查询使用或以其他方式控制 FROM 子句,或者使用 Session.query() 与 expression.func 表达式结合使用,例如: from sqlalchemy...若要对特定进行精细控制以计数,跳过查询使用或以其他方式控制 FROM 子句,或者使用 expression.func 表达式结合 Session.query() 使用,即: from sqlalchemy

5410

SqlAlchemy 2.0 中文文档(三十)

这意味着对于一个特定Query构建场景,如果该场景被多次使用,那么从初始构建查询到生成 SQL 字符串所涉及所有 Python 函数调用将只会发生一次,不是每次构建和执行查询时都会发生。...实际元素列表语句执行时呈现,不是语句编译时: bakery = baked.bakery() baked_query = bakery(lambda session: session.query...实际元素列表语句执行时渲染,不是语句编译时: bakery = baked.bakery() baked_query = bakery(lambda session: session.query...使用Query对象时,通常需要一个Query对象用于另一个内部生成查询。...实际元素列表语句执行时呈现,不是语句编译时: bakery = baked.bakery() baked_query = bakery(lambda session: session.query

11310

SqlAlchemy 2.0 中文文档(十一)

如果你知道你在做什么,像上面这样使用映射是可以很少使用“关联对象”模式情况下使用多关系可能是有充分理由,因为通过单个多多关系加载关系更容易,这也可以优化“次要”表 SQL 语句中使用效果...如果知道自己在做什么,使用上述映射是可以很少使用“关联对象”模式情况下使用多关系可能有充分理由,因为单个多多关系中加载关系更容易,这也可以稍微优化“secondary”表 SQL 语句中使用方式...其他字符,如破折号等,将被解释为 Python 运算符,不会解析为给定名称。请考虑使用 lambda 表达式不是字符串以提高清晰度。...其他字符,如破折号等,将被解释为 Python 操作符,不会解析为给定名称。请考虑使用 lambda 表达式不是字符串,以提高清晰度。...其他字符,如破折号等,将被解释为 Python 操作符,不会解析为给定名称。请考虑使用 lambda 表达式不是字符串,以提高清晰度。

8110
领券