新闻和更新
SQLAlchemy 1.2.0b1 发布
2017年7月10日 永久链接
SQLAlchemy 1.2.0b1 版本现已发布。
这是 SQLAlchemy 1.2 系列的第一个 Beta 版本。与所有 Beta 版本一样,此版本已在 Pypi 上发布,但只有在使用--pre标志和pip.
时才能安装。版本 1.2 的主要亮点包括:
- 连接池预 Ping - 连接池现在包含一个可选的“预 Ping”功能,该功能将在每次连接检出时测试池连接的“活动性”,并在数据库断开连接时透明地回收 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 短语。现在可以针对这两个后端组合简单的数据库无关的“合并”例程。
- COMMENT 支持 - 感谢慷慨的贡献,版本 1.2 可以发出所有必要的 DDL,并完全反映 MySQL、PostgreSQL 和 Oracle 后端的表和列的 SQL 注释。
- ORM 加载器中的 SQL 表达式缓存 - “lazyload”特性以及新的“selectin”加载现在在使用 “baked query” 扩展发出查询时使用 SQL 表达式缓存,从而消除了这些非常常见操作中的大量 Python 开销。
用户应仔细阅读 SQLAlchemy 1.2 中的新功能? 文档以及 变更日志,以注意哪些行为和问题受到影响。我们要感谢为此次发布做出贡献的众多贡献者。
SQLAlchemy 1.2.0b1 可在下载页面上获取。