新闻和更新
SQLAlchemy 1.2.0b1 发布
July 10, 2017 永久链接
SQLAlchemy 1.2.0b1 版本现已发布。
这是 SQLAlchemy 1.2 系列的第一个 beta 版本。与所有 beta 版本一样,此版本可在 Pypi 上获取,但仅在使用--pre标志与pip.
时才可安装。版本 1.2 的主要亮点包括
- 连接池预先探测 - 连接池现在包含一个可选的“预先探测”功能,该功能将为每次连接检出测试池连接的“活动性”,并在数据库断开连接时透明地回收 DBAPI 连接。此功能消除了对“pool recycle”标志的需求,以及在数据库重启后使用池连接时引发错误的问题。
- 新的预加载功能 - 添加了一个全新的预加载器,称为“selectin”。此加载器类似于“子查询”预加载,但放弃了嵌入复杂的子查询,而是使用一个简单的 IN 表达式,该表达式使用刚加载对象的主键值来定位相关行。在许多情况下,这种加载方式的性能将比“子查询”预加载好得多。
- 新的多态加载选项 - “selectin”加载器也为多态继承层次结构实现,它将一次性加载子类的额外表行,而无需使用 JOIN 或“with_polymorphic”。添加了新的声明式选项,以允许每个子类的多态加载配置。
- IN 运算符现在为空 IN 发出简单表达式 - “空 in”解析为性能不佳的表达式并发出警告的长期行为已作为默认行为删除;对于没有元素的 IN,现在使用一个简单的1 != 1表达式来评估为“false”。
- MySQL 中 INSERT..ON DUPLICATE KEY UPDATE 支持 - 为了补充 1.1 中对 PostgreSQL “INSERT..ON CONFLICT” 的支持,MySQL 方言现在支持 ON DUPLICATE KEY 短语。现在可以针对这两个后端组合简单的数据库无关的“merge”例程。
- COMMENT 支持 - 感谢慷慨的贡献,版本 1.2 可以发出所有必要的 DDL,并完全反映 MySQL、PostgreSQL 和 Oracle 后端的表和列的 SQL 注释。
- ORM 加载器中的 SQL 表达式缓存 - “lazyload”功能以及新的“selectin”加载现在在使用查询时使用“baked query”扩展的 SQL 表达式缓存,从而消除了这些非常常见的操作中的大量 Python 开销。
用户应仔细查看 SQLAlchemy 1.2 中的新功能? 文档以及 更新日志,以注意哪些行为和问题受到影响。我们要感谢为本次发布做出贡献的众多贡献者。
SQLAlchemy 1.2.0b1 可在下载页面上获取。