获取 SQLAlchemy
下载背景信息和发布状态。
版本 2.0
最新 2.0 版本: 2.0.36 (通过 Cheeseshop 获取 2.0.36) (变更记录)
SQLAlchemy 2.0.36 使用 Michael Bayer 的 PGP 密钥 ID C4DAFEE1 签名 (使用 gpg --recv-keys C4DAFEE1
导入)。
请务必查看 1.4 到 2.0 的迁移指南,该指南位于 2.0 新特性?,以获取自 1.4 以来的所有变更详情。
版本 1.4
最新 1.4 版本: 1.4.54 (通过 Cheeseshop 获取 1.4.54) (变更记录)
发布支持: 维护模式
请注意: 1.4 系列是当前的“维护”系列。将根据需要提供针对关键修复程序的更新,但建议继续处于积极开发中的应用程序开始升级到当前系列的 SQLAlchemy(当前为 2.0 系列)。
SQLAlchemy 1.4.54 使用 Michael Bayer 的 PGP 密钥 ID C4DAFEE1 签名 (使用 gpg --recv-keys C4DAFEE1
导入)。
请务必查看 1.3 到 1.4 的迁移指南,该指南位于 1.4 新特性?,以获取自 1.3 以来的所有变更详情。
开发版本
有关 Git 存储库访问的更多详细信息,请参见 开发。
许可证
SQLAlchemy 受 MIT 许可证 约束。
版本编号方案
在 SQLAlchemy 组织 内的所有项目都使用相同的版本编号方案,该方案与许多项目的方案类似,是一种修改后的“语义版本控制”方案。它大致基于 Python 版本编号方案,并进行了一些调整以适应 SQLAlchemy 和 Alembic 的特定需求。
给定一个像“1.3.6”这样的版本号,我们可以将其分解为 **主版本**、**次版本** 和 **修订版本**。
修订版本
修订版本是最常见的发布系列,对于活跃的项目,每隔几周甚至更短的时间就会发布一次。修订版本应 **始终与任何项目完全兼容,以便在不进行任何更改的情况下将项目移至该版本,前提是给定特定主版本/次版本系列**。这意味着,如果一个项目使用 SQLAlchemy 的 1.2.3 版本,理想情况下,该项目应该能够直接升级到最新的 1.2.x 系列,例如 1.2.19,而无需升级到中间版本。
修订版本包括三种变更类别
- **错误修复** - 修订版本的主要目的是发布错误修复,而不会进行任何向后不兼容的变更。被认定为对向后兼容性风险过高的错误修复将改为推送到次版本中。
- **用例添加** - “用例”是一种介于“错误修复”和“功能”之间的变更类别,它们通常适用于对新数据库功能的支持。由于用户不断创建或请求新数据库功能,并且通常涉及特定数据类型或小型 SQL 语法,因此这些功能通常会添加到修订版本中,前提是它们不会破坏 SQLAlchemy 或 Alembic 迁移中的向后兼容性。较大的用例添加将在次版本中发布。
- **小型功能添加** - 由于修订版本的发布周期为每隔几周,而次版本的发布周期通常为至少一年或更长时间,因此不会对任何当前代码或 API 产生影响的功能添加通常会包含在修订版本中;一个例子是 在 ORM 加载程序选项上创建子选项的能力。
请注意,虽然修订版本是最保守和最频繁的发布流,但始终有可能引入意外的回归。建议项目在升级到任何 SQLAlchemy 组织软件的新版本时始终全面测试其软件,包括使用测试套件和/或暂存环境。
重要的次版本
SQLAlchemy 中的次版本实际上是“重大”事件,因为它们通常需要一年时间才能发布;对于相关项目,次版本可能发布频率较低。我们可能会将它们称为 **重要的次版本**,以表明它们是重大事件,但同时不将它们与“主版本”混淆,因为“主版本”通常指的是版本编号方案中最左边的数字。次版本的变化意味着该项目包含的变更 **通常在不先前已弃用的 API 和当前 Python 版本范围内向后兼容,但也存在一些非向后兼容的风险**,特别是在 SQLAlchemy 本身中;由于变更的性质,这种风险通常是不可避免的。
因此,“重要的次版本”对于 SQLAlchemy 本身来说并非真正“次要”,并且始终有一个 详细的迁移说明 部分,详细描述了可能需要识别的每个 API 调整和行为变更。对于其他项目,次版本通常指的是 Python 版本支持的变更,例如放弃对 Python 2.6 的支持,或者 Alembic 放弃对 SQLAlchemy 0.9 的支持;有关新增内容的概述,请参阅变更记录。
重要的次版本,特别是在 SQLAlchemy 本身中,将包括
**主要新功能** - 新的 API 功能和能力,以及结构和性能改进,是 SQLAlchemy 本身和相关项目的每个次版本的一部分。这些添加通常完全向后兼容,但是由于它们通常会更改大量的内部代码,因此回归的风险更高,特别是在 SQLAlchemy 中;这些回归通常会在新次版本的最初几个修订版本中解决。与往常一样,下游应用程序应运行其测试套件并报告新次版本中的任何问题。
**行为变更** - 大多数行为变更都很微妙,不太可能在一般情况下造成问题。但是,这些变更可能与依赖于先前错误行为或绕过旧行为(旧行为不再产生相同结果)的最终用户代码向后不兼容。一个典型的例子是以前没有正确引用或转义的 SQL 渲染,然后进行了修复;下游应用程序通常会通过手动应用引用来解决此问题,一旦 SQLAlchemy 修复了此问题,该引用就变得多余。此类变更的一个例子是 列级 COLLATE 关键字现在会引用排序规则名称,它会将引用添加到必须以区分大小写的形式指定的数据库排序规则名称。
预计不会造成问题的行为变更仍然有记录,以防出现一些不可预见的问题;一个例子是 FOR UPDATE 子句在联接急切加载子查询中以及外部都被渲染¶,它修改了在包含联接急切加载的 SELECT 中渲染“FOR UPDATE”的方式。此变更对 MySQL 用户的影响最大,因为它绕过了已知的 MySQL 问题,并且会突然开始锁定联接急切加载中相关表中的表行,而在此前的特定后端上并非如此。
**API 弃用** - SQLAlchemy 和相关项目尝试仅在次版本中添加新的弃用,而不是在修订版本中添加。任何已弃用的 API 应该尽可能多地发出DeprecationWarning当使用该 API 时。虽然这在旧版本中并不总是如此,但目标是仅在次版本中添加弃用,并且它们应该在使用时发出警告。这样做是为了让项目有整个次版本周期来迁移出旧的 API,并且使弃用易于识别。
**删除先前已弃用的 API** - 在特定次版本中弃用的 API 可能会在下一个次版本中立即删除,尽管已弃用的 API 通常会在多个次版本中保留。在现代版本中,已弃用的 API 在整个特定次版本周期内使用时应发出警告。
主版本
主版本指的是项目的总体成熟度状态,这是一个多年状态。项目从 0 开始,例如 sqlalchemy-collectd-0.0.4,它表示从初始 Alpha 版本到长期稳定版本的成熟度范围,它认为主版本之间的每个次版本都可能发生重大变更。在主版本 1 中,项目被认为已成熟。主版本 2 及更高版本分别表示项目与 Python 2 到 Python 3 类似的重大变化。
发布状态
此表总结了 SQLAlchemy 发布的整体历史,并提供了更多近期的次版本的链接。
主版本/次版本 | 首次发布 | 最新发布 | 最新修订版本 | 发布状态 |
---|---|---|---|---|
2.1 [文档] [新特性?] | 开发中 | |||
2.0 [文档] [新特性?] | 2022-10-13 (测试版) | 2024-10-15 | 2.0.36 [变更] | 当前版本 |
1.4 [文档] [新特性?] | 2020-11-02 (测试版) | 2024-09-05 | 1.4.54 [变更] | 维护 |
1.3 [文档] [新特性?] | 2018-11-17 (测试版) | 2021-03-30 | 1.3.24 [变更] | EOL |
1.2 [新特性?] | 2017-07-10 (测试版) | 2019-04-15 | 1.2.19 [变更] | EOL |
1.1 [新特性?] | 2016-06-16 (测试版) | 2018-03-06 | 1.1.18 [变更] | EOL |
1.0 [新特性?] | 2015-03-13 (测试版) | 2017-08-03 | 1.0.19 [变更] | EOL |
0.9 | 2013-12-30 | 2015-07-22 | 0.9.10 [变更] | EOL |
0.8 | 2012-12-14 (测试版) | 2014-07-22 | 0.8.7 [更改] | EOL |
0.7 | 2011-05-21 | 2013-02-08 | 0.7.10 [更改] | EOL |
0.6 | 2010-02-03 (测试版) | 2012-05-06 | 0.6.9 [更改] | EOL |
0.5 | 2008-06-12 (测试版) | 2010-01-16 | 0.5.8 [更改] | EOL |
0.4 | 2007-08-12 (测试版) | 2008-10-12 | 0.4.8 [更改] | EOL |
0.3 | 2006-10-22 | 2007-10-14 | 0.3.11 [更改] | EOL |
0.2 | 2006-05-27 | 2006-09-05 | 0.2.8 [更改] | EOL |
0.1 | 2006-02-14 | 2006-05-05 | 0.1.7 [更改] | EOL |
关于发布状态类别
下表总结了每个状态类别
发布状态 | 解释 |
---|---|
开发 | 积极开发下一个主要版本的 SQLAlchemy。 “开发”状态默认情况下不会在 Pypi 上发布,只存在于 git 仓库中,通常位于主分支下。 当创建“开发”状态的第一个版本时,状态将变为“测试版”。 |
测试版 | 当前开发版本的评估版本。 这些版本可在 Pypi 上获取,但它们的版本名称中包含“b”字符,因此根据 pep-0440,这些版本不会被 pip 工具安装,除非指定了 --pre 标志。“测试版”状态通常与“开发”状态互斥。 |
当前版本 | SQLAlchemy 的当前官方版本。 正在进行的工作是解决回归和错误,这些回归和错误仍然可以在不造成重大不稳定风险的情况下应用。 处于积极开发中的应用程序应始终至少引用“当前”版本。 |
维护 | 当“测试版”系列变为“当前”时,就会出现维护系列,之前的“当前”系列变为“维护”。 维护系列接受有限的严重错误修复,因为预计处于积极开发中的应用程序将迁移到“当前”版本(如果它们还没有迁移)。 一旦下一个开发版本开始,维护系列将不再发布,并变为“EOL”。 |
EOL | 此版本不再维护,被视为遗留版本。 强烈建议生产环境中针对 EOL 里程碑使用的应用程序升级到较新版本。 |