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

SqlAlchemy 2.0 中文文档(十五)

对于这种情况,我们使用backref()函数代替字符串;这将存储一组特定的参数,这些参数将在生成新的relationship()传递: # from sqlalchemy.orm...对于这种情况,我们使用backref()函数来代替字符串;这将存储一组特定的参数,这些参数在生成新的relationship()将被传递: # from sqlalchemy.orm...使用声明性,它也可以是一个字符串参数,指示存在于与父映射的 Table 关联的 MetaData 集合的 Table 的名称。...警告 当作为 Python 可评估字符串传递,使用 Python 的 eval() 函数解释该参数。不要将不受信任的输入传递给该字符串。...使用 ORM ,通常将这些目标陈述为 `aliased()` 构造的术语,但这不是严格要求的,特别是如果连接的实体不在结果返回。

10210

SqlAlchemy 2.0 中文文档(二十五)

它既不在标识映射中,也不在指示其曾待删除的 Session.deleted 集合。 从“deleted”状态,当事务提交,对象可以进入分离状态,或者如果事务被回滚,则可以重新进入持久化状态。...它不在标识映射中,也不在指示它何时待删除的 Session.deleted 集合。 从“deleted”状态,对象可以事务提交进入分离状态,或者如果事务回滚,则返回持久状态。...刷新之后,目标对象的“已删除”状态才存在。 “删除”状态,对象与Session仅具有较弱的关联。它不在标识映射中,也不在指向它曾经等待删除的Session.deleted集合。...请注意,当指定info参数进行特定Session构造操作,此字典将被更新,而不是替换。 **kw – 所有其他关键字参数都传递给新创建的Session对象的构造函数。...请注意,当info参数被指定给特定的Session构造操作,此字典会被更新而不是被替换。 **kw – 所有其他关键字参数都将传递给新创建的Session对象的构造函数。

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

SqlAlchemy 2.0 中文文档(十七)

为了实现这一点,结合使用Insert.values()方法,传递一个将应用于所有行的参数字典,以及调用Session.execute()包含包含单个行值的参数字典列表的常规批量调用形式。...传统会话批量更新方法 ### ORM “upsert” 语句 SQLAlchemy ,选定的后端可能包括特定方言的Insert 构造,这些构造还具有执行“upserts”或将参数集中的现有行转换为近似...要实现这一点,请将Insert.values()方法与通常的批量调用形式结合使用,方法是调用Session.execute()包含包含单独行值的参数字典列表。...为此,将使用 Insert.values() 方法,传递一个参数字典,该字典将应用于所有行,与通常的批量调用形式结合使用,方法是调用 Session.execute() 包含包含单独行值的参数字典列表... 2.0.11 版本更改:可以使用Update.where()方法添加额外的 WHERE 条件与 ORM 按主键批量更新相结合。但是,此条件始终是额外添加的,这包括主键值。

18110

SqlAlchemy 2.0 中文文档(二)

Lateral与Subquery和Alias位于同一家族,但在将构造添加到封闭 SELECT 的 FROM 子句还包括相关联行为。...横向关联与子查询和别名属于同一系列,但是当将构造添加到包围 SELECT 的 FROM 子句,还包括关联行为。...AS lower_1 now()函数,提供当前日期和时间;由于这是一个常见的函数,SQLAlchemy 知道如何为每个后端呈现不同的结果, SQLite 中使用 CURRENT_TIMESTAMP...,特别是更大表达式的上下文中;也就是说,当表达式的数据类型是类似 Integer 或 Numeric 这样的类型,数学运算符将更有效,为了 JSON 访问器正常工作,需要使用类似 JSON 这样的类型..., 'spongebob@sqlalchemy.org')] ROLLBACK 上述,FunctionElement.over.partition_by参数用于 OVER 子句内呈现 PARTITION

14510

SqlAlchemy 2.0 中文文档(二十)

另请参阅 ORM 实体别名 - SQLAlchemy 统一教程 选择 ORM 别名 - ORM 查询指南 参数: element – 要别名化的元素。...name – 用于别名的可选字符串名称,如果未由 alias 参数指定。名称,除其他外,形成了将通过 Query 对象返回的元组访问的属性名称。创建 Join 对象的别名不支持。...另请参阅 ORM 实体别名 - SQLAlchemy 统一教程 选择 ORM 别名 - ORM 查询指南 参数: element – 要别名的元素。...name – 如果未由alias参数指定,则使用的可选字符串名称。名称,除其他外,形成了通过Query对象返回的元组访问的属性名称。创建Join对象的别名不支持。...name - 可选的字符串名称,用于别名,如果未由alias参数指定。该名称,除其他外,形成了由Query对象返回的元组访问的属性名称。创建Join对象的别名不受支持。

7710

SqlAlchemy 2.0 中文文档(十三)

relationship()的默认行为是根据配置的 加载策略 完全将集合内容加载到内存,该加载策略控制何时以及如何从数据库加载这些内容。...相关集合可能不仅在访问加载到内存,或者急切地加载,而且集合本身发生变化时以及由工作单元系统删除所有者对象也需要进行填充。...Session 内部保持挂起队列,直到下一次刷新,在此时它们被插入到数据库,假设添加的对象之前是瞬态的。...ORM 查询指南 一对多 - 基本关系模式 多对多集合 对于多对多集合,两个类之间的关系涉及使用 relationship.secondary 参数配置的第三个表的情况。...ORM 查询指南中 一对多 - 基本关系模式 多对多集合 对于多对多集合,两个类之间的关系涉及使用relationship的relationship.secondary参数配置的第三个表。

5810

SqlAlchemy 2.0 中文文档(二十二)

如何获取特定对象的 Session? 会话是线程安全的吗?AsyncSession 并发任务安全共享吗?...当调用方法如Session.add()或Session.execute(),或类似地执行用于返回结果的Query(最终使用Session.execute()),或者持久化对象上修改属性,事务状态将自动开始...事务生命周期内将挂起状态的对象从添加到Session的状态是被移除的,对应于其 INSERT 语句的回滚。它们的属性状态保持不变。...Transient - 一个不在会话的实例,也没有保存到数据库;即它没有数据库标识。...## 快速对象状态介绍 了解实例会话可能具有的状态是有帮助的: 瞬时 - 一个不在会话并且没有保存到数据库的实例;即它没有数据库标识。

11210

SqlAlchemy 2.0 中文文档(二十四)

由于 MySQL 上的TIMESTAMP实际上存储了一个二进制值,因此我们需要在使用“NOW()”添加额外的“CAST”,以便检索到可以持久化到列的二进制值: from sqlalchemy import...使用 SQL 表达式与会话 SQL 表达式和字符串可以通过其事务上下文 Session 执行。...这是一个一致性问题,关系数据库通过“两阶段事务”解决,它在提交序列添加了一个额外的“准备”步骤,允许多个数据库实际完成事务之前同意提交。...注意,高度隔离的事务将返回同一事务先前读取的相同值,而不管该事务外部数据库状态的变化如何。刷新属性通常只事务开始时有意义,此时数据库行尚未被访问。...返回: 一个 ScalarResult 对象 新特性版本 1.4.24 添加:增加了 Session.scalars() 新特性版本 1.4.26 添加:增加了scoped_session.scalars

16010

SqlAlchemy 2.0 中文文档(一)

该引擎通常是一个全局对象,仅为特定数据库服务器创建一次,并且使用 URL 字符串进行配置,该字符串将描述它应该如何连接到数据库主机或后端。 为了本教程,我们将使用内存的 SQLite 数据库。...engine.connect() as conn的调用替换为with Session(engine) as session,然后像使用Connection.execute()方法一样使用Session.execute...接下来的章节,我们将说明如何使用这些结构创建、操作和选择数据。 使用 Table 对象设置 MetaData 当我们使用关系型数据库,数据库我们查询的基本数据持有结构被称为表。...__repr__() 方法被添加以便我们获得可读的字符串输出;这些方法不要求必须在这里。...然后,处理数据库元数据,我们学习了如何使用MetaData和相关对象 SQLAlchemy 中表示数据库表、列和约束。本节,我们将结合上述两个概念来创建、选择和操作关系数据库的数据。

13410

SqlAlchemy 2.0 中文文档(二十八)

新版本 1.4.24 添加了传递给底层Session.connection()方法的**kw 参数。...下次访问过期属性,将向Session对象的当前事务上下文发出查询,以加载给定实例的所有过期属性。请注意,高度隔离的事务将返回与之前同一事务读取的相同值,而不管该事务之外的数据库状态如何更改。...新版本 1.4.24 添加了**kw 参数,这些参数将传递给底层的Session.connection()方法。...AsyncSession 是否可以并发任务中共享?部分,了解关于Session和AsyncSession处理并发工作负载如何使用的一般描述。...版本 2.0.13 的新功能。 另请参见 AsyncAttrs 集合可以被只写集合替换,永远不会隐式发出 IO,通过 SQLAlchemy 2.0 中使用只写关系功能。

23210

SqlAlchemy 2.0 中文文档(二十一)

然而,这些列 不会 添加到实际由 Query 获取的列列表,因此不会影响结果。然而,使用 Query.statement 访问器,这些列会通过。...例如,如果我们连接链依次指定User、Item和Order,则 Query 将不知道如何正确连接;在这种情况下,根据传递的参数,它可能会引发一个不知道如何连接的错误,或者可能会产生无效的 SQL,数据库会因此而引发错误...然而,这些列不会添加到实际由Query获取的列列表,因此不会影响结果。但是,使用Query.statement访问器,这些列会被传递。...自版本 2.0 起已弃用:此逻辑已弃用,并将在 SQLAlchemy 2.0 删除。请参阅仅选择实体使用 DISTINCT 添加额外列以获取 2.0 版此用例的描述。...方言实现通常使用 Python 字符串替换语法,其中的令牌 %(name)s 用于呈现表或别名的名称。

14410

SqlAlchemy 2.0 中文文档(二十三)

有关更多背景信息,请参阅使用 AsyncSession 防止隐式 I/O 的注释。 可以为relationship.cascade参数指定的可用值列表以下各小节中进行描述。...Item对象并设置所有所需状态之后,应明确将其添加到Session: >>> session.add(i1) 旧版本的 SQLAlchemy ,保存-更新级 learning method 会在所有情况下双向发生...Item对象并设置所有所需状态之后,应明确将其添加到Session: >>> session.add(i1) 较旧版本的 SQLAlchemy ,保存-更新级联在所有情况下都会双向发生。...Session首先将当前所有待定状态刷新到数据库;这是无条件发生的,不管Session.autoflush参数的值如何,该参数通常用于禁用自动刷新。...这样做是为了后续操作可以继续使用那些未受影响的数据,而无需从数据库刷新。

11810

SqlAlchemy 2.0 中文文档(二十六)

持久化事件中了解更多信息。 对象生命周期事件 - 当对象被添加、持久化、从会话删除触发的钩子。在对象生命周期事件中了解更多信息。...此事件是一个do_事件,意味着它具有替换Session.execute()方法通常执行的操作的能力。...持久化事件中了解更多信息。 对象生命周期事件 - 当对象从会话添加、持久化、删除触发的钩子。在对象生命周期事件中了解更多信息。...此事件是一个do_事件,意味着它具有替换Session.execute()方法通常执行的操作的能力。...每当元素被追加到集合,都会调用追加事件。这适用于单个元素追加以及“批量替换”操作。 参数: target – 接收事件的对象实例。

9310

SqlAlchemy 2.0 中文文档(三十三)

第二种方法,每行引用一个“数据类型”,其中包含有关属性存储的信息类型的信息,例如整数、字符串或日期。...helloworld.py - 演示如何加载一些数据,并缓存结果。 relationship_caching.py - 演示如何在关联端点上添加缓存选项,以便懒加载从缓存中加载。...在内容/文档管理系统通常可以灵活表示用户创建的结构。 给出了两种方法的变体。第二种方法,每行引用一个“数据类型”,其中包含关于属性存储的信息类型的信息,例如整数、字符串或日期。...第二种方法,每行引用一个包含有关存储属性的信息类型的“数据类型”,例如整数、字符串或日期。...+ relationship_caching.py - 展示了如何在关系终点添加缓存选项,以便惰性加载从缓存中加载。

13810
领券