新闻和更新

SQLAlchemy 1.4.2 发布
永久链接

SQLAlchemy 1.4.2 现已发布。

由于大量关于小回归和新特性问题的报告持续超出 1.4.1 版本,1.4.2 版本现在包含了下一批修复程序。1.4.2 版本主要包含更多的回归修复,所有这些修复都是“一行代码”修复,以及 Dataclasses 特性支持的一个新用例,允许使用声明式混入,其中包含@declared_attr以作为 Dataclasses 工作。

再次感谢提交出色错误报告的用户,以及我们的核心开发团队整周工作以巩固 1.4 版本。

对于从 1.3 迁移的用户,第一站是 1.4 版本的新特性? 文档,该文档将概述如何开始使用 SQLAlchemy 1.4。

1.4.2 以及所有 beta 版本的完整更新日志位于 更新日志

SQLAlchemy 1.4.2 可在 下载页面 获取。

SQLAlchemy 1.4.1 发布
永久链接

SQLAlchemy 1.4.1 现已发布。

对 SQLAlchemy 1.4.0 版本的反响非常热烈。为了证明其广泛的使用程度,在一天之内,我们就收到了大量关于新问题的报告,这些问题大多是小的和相当边缘的案例问题,例如由新 API 等引入的命名冲突。SQLAlchemy 1.4.1 包含了第一批针对这些问题的修复,以及针对更严重的回归的修复,该回归涉及高度动态的映射器配置中的延迟加载,该回归已被识别和修复。

感谢我们众多慷慨的贡献者以及我们的核心开发团队迅速完成了此快速修复版本; 还有更多工作要做,因此更多版本正在路上。

对于从 1.3 迁移的用户,第一站是 1.4 版本的新特性? 文档,该文档将概述如何开始使用 SQLAlchemy 1.4。

1.4.1 以及所有 beta 版本的完整更新日志位于 更新日志

SQLAlchemy 1.4.1 可在 下载页面 获取。

SQLAlchemy 1.4.0 发布
永久链接

SQLAlchemy 1.4.0 版本现已发布。

在 1.4 系列的三个 beta 版本之后,1.4.0 版本 终于发布了。这是 SQLAlchemy 至少十年来最广泛的版本,对 Core 和 ORM 中最突出的 API 进行了重大反思,大幅修改了内部结构,并具有广泛重要的新特性和功能。

SQLAlchemy 1.4 将自身确立为 SQLAlchemy 2.0 项目的起点,该项目将完全迁移到仅 Python 3,并最终确定在 1.4.0 版本中引入的新 API。

SQLAlchemy 1.4.0 最重要的亮点包括

  • 用于为 Core 和 ORM 生成 SELECT 和其他 SQL 语句的方法现在围绕修订后的、功能更强大的 统一select()构造,以便针对 Core 或 ORM 上下文的 SQL 查询现在使用相同的 API 和模式进行组合。Session.execute()Connection.execute()方法已对齐,以便 Core 和 ORM 查询以及结果集之间的转换是无缝的,并且两个系统的行为方式尽可能相似。对显式性和明确一致性的新强调旨在使学习和使用 SQLAlchemy 更加直接,同时还支持新的 Python 范例,例如 asyncio 和 PEP-484 类型。
  • 修订后的声明式映射系统,为许多新的映射范例提供支持,包括使用装饰器而不是基类映射类,显式支持 Pythondataclasses,以及“命令式映射”,它是经典mapper()与声明式类注册表集成的操作。
  • Core 和 ORM 的 SQL 编译的通用且完全透明的缓存。这取代了以前版本中为 ORM 提供可选 SQL 缓存系统的“baked query cache”系统,采用了一种新方法,该方法完全透明,并且为 Core 和 ORM 中的绝大多数 DML 和 DQL 语句启用。该系统不仅缓存语句的即时 SQL 字符串,还缓存其相关的结果处理基础设施,该基础设施用于为每个查询生成新行和 ORM 对象实例。
  • Core 的新修订的事务模型Engine以及 ORMSession它更易于使用,消除了已变得令人困惑的旧版 API,并且以比以前更一致的方式运行。新的事务模型将是 SQLAlchemy 2.0 中唯一的模型,可以通过传递future=True标志来启用 1.4 中的全部功能create_engine()函数以及Session()构造函数。
  • 完全支持 Pythonasyncio对于 Core 和 ORM。这个新系统利用了greenlet上下文切换库,以使整个 SQLAlchemy 适应在非常薄的asyncio前端之后可用,同时直接针对asyncioasyncio 事件循环中的数据库驱动程序运行,无需线程执行器。目前支持asyncpgaiomysql,更多驱动程序正在开发中。
  • 大大改进了 ORM 查询可扩展性,使用了新的钩子和选项,包括SessionEvents.do_orm_execute()钩子和with_loader_criteria()函数,它们共同可以可靠且可预测地拦截和修改所有带有附加条件的 ORM 查询;do_orm_execute()本身证明了它的价值,因为它现在是实现“水平分片”(在多个数据库之间多路复用单个查询)和“dogpile 缓存”(使用缓存的Result对象)示例所需的唯一钩子。
  • 现在正在进行对 PEP-484Mypy 的原生支持,其中包含一个全新的 Mypy 插件的第一个 alpha 版本,该插件与新发布的 stubs 库一起运行sqlalchemy2-stubs.

如果没有数百名贡献者以及我们最近扩大的敬业维护团队的帮助,1.4 版本是不可能实现的; 我们要 非常感谢 Federico Caselli、Gord Thompson、Jonathan Vanasco 和 Ramon Williams,感谢他们在处理数百个问题和致力于实现主要新功能方面做出的巨大努力,以及我们经常提供用户支持的贡献者,包括 Alex Grönholm 和 Simon King。

对于从 1.3 迁移的用户,第一站是 1.4 版本的新特性? 文档,该文档将概述如何开始使用 SQLAlchemy 1.4。

1.4.0 以及所有 beta 版本的完整更新日志位于 更新日志

SQLAlchemy 1.4.0 可在 下载页面 获取。

SQLAlchemy 1.4.0b3 发布
永久链接

SQLAlchemy 1.4 系列的第三个 beta 版本 1.4.0b3 现已发布。

1.4.0b3 版本包含一些新特性和更改。特别是,当在 2.0 样式中使用 SELECT 语句时,对命名行中列的策略进行了更改,以便这些名称更直接地匹配最初请求的内容,包括在使用特殊标签场景时。还有一些额外的回归修复。

虽然 1.4.0b2 计划是 1.4.0 之前的最后一个 beta 版本,但我们希望进行更多测试,包括上述列命名更改,因此发布了 1.4.0b3。1.4.0 最终版本预计将在未来几周内发布。

感谢我们众多慷慨的贡献者以及我们的核心开发团队,使这个 beta 版本和所有版本发布到世界各地。

SQLAlchemy 1.4 的迁移指南是开始了解正在发生的事情的最佳场所:1.4 版本的新特性?。完整的更新日志位于 更新日志

按照命名约定,SQLAlchemy 1.4.0b3 是一个 beta 版本,因此只有在包含--pre标志时才通过 pip 安装。SQLAlchemy 1.4.0b3 的 pypi 链接可在 下载页面 上找到。

SQLAlchemy 1.4.0b2 发布
永久链接

SQLAlchemy 1.4 系列的第二个 beta 版本 1.4.0b2 现已发布。

1.4.0b2 版本包含对 1.4.0b1 版本中发布的许多新 API 和特性的广泛持续修复和添加,并添加了新特性,包括

  • 支持“表值”和相关的 SQL 函数形式,最突出的是为 PostgreSQL ARRAY 和 JSON 相关函数请求的
  • 支持 MySQL aiomysql asyncio 驱动程序
  • SQLite 的 INSERT..ON CONFLICT 支持
  • ORM 声明式支持 Python Dataclasses 的新变体,允许 SQLAlchemy Column、relationship() 和其他构造在 Dataclass 中内联使用Field()对象
  • 支持每个registry()的映射器配置和拆卸,例如,允许配置与特定声明性基关联的映射,同时不影响来自其他基的映射器
  • 用于调试并发应用程序的每个连接的日志记录令牌

该版本还包含对主要新特性的广泛修复和缺失行为,包括

  • 添加到 asyncio 扩展的许多缺失特性和行为
  • PostgreSQL 的 asyncpg 方言的错误和性能改进。
  • 对新的“lambda SQL”特性(固有的with_loader_criteria()特性

希望 1.4.0b2 将是 1.4.0 最终版本之前的最后一个 beta 版本,1.4.0 最终版本本身有望在未来几周内发布。

在 1.4.0 最终版本发布几周后,2.0 分支将移至 main,并且 SQLAlchemy 作为仅支持类型注释的 Python 3 系统的开发可以开始。

1.4 / 2.0 系列的最终目标是使 SQLAlchemy 更易于学习更一致更可靠

大量的贡献者以及我们的核心开发团队为我们达到第二个 beta 版本做出了巨大贡献,每个人都值得我们最深切的感谢和感激。

SQLAlchemy 1.4 的迁移指南是开始了解正在发生的事情的最佳场所:1.4 版本的新特性?。完整的更新日志位于 更新日志

按照命名约定,SQLAlchemy 1.4.0b2 是一个 beta 版本,因此只有在--pre包含标志时才通过 pip 安装。SQLAlchemy 1.4.0b2 的 pypi 链接可在 下载页面 上找到。