新闻和更新
SQLAlchemy 1.2.0 发布
December 27, 2017 永久链接
SQLAlchemy 1.2.0 版本现已发布。
1.2.0 版本是 1.2 系列的第一个正式版本,此前发布了三个 beta 版本。此版本代表了自 1.1 版本发布以来的过去 18 个月的新功能开发成果。
1.2 系列在 Core 和 ORM 组件中都包含了大量特性和行为增强,包括 ORM 关系加载、Core IN 操作符的行为、新的 SQL 构造(如 DELETE..FROM 和 MySQL 的 INSERT..ON DUPLICATE KEY UPDATE),以及一个新的连接池功能,该功能在检出时提供悲观连接测试。
迁移说明和更新日志应涵盖所有需要注意的内容,但一些主要更改包括
- 惰性加载器和延迟预加载器现在使用 baked query 系统,以大幅减少 Python 调用开销
- 一种新的预加载器,称为 “SELECT IN” 加载,类似于子查询预加载,但使用带有主键的 IN 子句,在许多情况下性能明显更快
- “SELECT IN” 加载的一种变体,用于多态映射,它允许连接继承类的异构结果的子表行被批量加载,而无需预先使用 LEFT OUTER JOIN。
- IN 操作符现在允许以高性能方式使用空列表,修改了对这些表达式的长期限制
- 一个新的 “expanding IN” 子句,允许将任意项目列表后期绑定到 IN 操作符,就像单个绑定参数一样
- 支持 psycopg2 最近添加的 “fast execution” 助手,允许将 DML 语句批量处理成更大的块,从而大大减少网络开销
- 一个新的连接池参数pool_pre_ping,它在检出时 ping 连接,从而消除连接池中陈旧连接的问题
- 支持 DDL 和反射中的表和列注释
- 对 cx_Oracle 和 pyodbc MSSQL 以及 pymssql 方言进行了重大重构,以提高稳定性和性能。
还有许多其他的行为改进和更改,所有这些都是向后兼容的,但与往常一样,在以下情况下可能会令人惊讶:功能的突然出现、以前不存在的断言,或者修复以前未定义或有缺陷的行为可能会为现有应用程序产生意外的结果或错误消息。用户应仔细查看 1.2 版本新特性? 中的完整迁移说明系列,以了解已更改的全部内容,并应始终在将现有应用程序升级到生产环境之前,针对 1.2 系列进行全面测试。
1.2.0 以及所有 beta 版本的完整更新日志位于 更新日志;我们要感谢为本次发布做出贡献的许多贡献者。
SQLAlchemy 1.2.0 可在 下载页面 获取。
SQLAlchemy 1.2.0b3 发布
October 13, 2017 永久链接
SQLAlchemy 1.2.0b3 版本现已发布。
1.2.0b3 版本可能是 1.2.0 最终版本发布之前的最后一个 beta 版本。1.2.0b3 版本的发布被两个主要因素推迟。其中之一是 cx_Oracle 6.0 的发布,它是 cx_Oracle 基础客户端库的完全重构,这反过来又需要在 SQLAlchemy 方面进行大量工作来适应,这导致 SQLAlchemy 的 cx_Oracle 方言本身被重构和现代化,以更完整地利用 cx_Oracle 5.x 系列中引入的模式。另一个因素是 Microsoft SQL Server for Linux 的出现,这使得 SQL Server 测试最终成为 SQLAlchemy 持续集成环境的一部分;由于这项测试工作,库和测试套件修复了许多长期存在的 SQL Server 问题。
除了这两项工作之外,还有通常的问题修复流,这些修复被反向移植到 1.1.x 系列中,以及 1.2 系列新增的其他行为调整。
SQLAlchemy 1.2 版本新特性? 文档以及 更新日志 将详细介绍这些更改以及自 1.1 系列以来的总体更改。用户在针对 1.2 系列测试应用程序时,应仔细查看这些文档,包括从 1.2.0b2 升级到 1.2.0b3 的情况。我们要感谢为本次发布做出贡献的许多贡献者。
SQLAlchemy 1.2.0b3 可在 下载页面 获取。