新闻和更新
SQLAlchemy 1.2.0 发布
2017年12月27日 永久链接
SQLAlchemy 1.2.0 版本现已发布。
1.2.0 版本是 1.2 系列中的第一个正式版本,此前发布了三个 beta 版本。此版本代表了自 1.1 版本发布以来过去十八个月的新功能开发成果。
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 最近添加的 “快速执行” 助手,允许将 DML 语句批量处理成更大的块,从而大大减少网络开销
- 一个新的连接池参数pool_pre_ping,它在检出时 ping 连接,从而消除了连接池中陈旧连接的问题
- 支持 DDL 和反射中的表和列注释
- 对 cx_Oracle 以及 pyodbc MSSQL 和 pymssql 方言进行了重大重构,以提高稳定性和性能。
还有许多其他的行为改进和更改,所有这些都向后兼容,但在某些情况下可能会令人惊讶,即突然出现的功能、以前不存在的断言或先前未定义或有缺陷的行为的修复可能会为现有应用程序产生意外的结果或错误消息。用户应仔细查看 1.2 版本的新特性? 中的完整迁移说明系列,以了解已更改的全部内容,并始终在推广到生产环境之前针对 1.2 系列充分测试现有应用程序。
1.2.0 的完整变更日志以及所有 beta 版本的变更日志位于 变更日志;我们要感谢为此次发布做出贡献的众多贡献者。
SQLAlchemy 1.2.0 可在下载页面上获取。