获取 SQLAlchemy
下载背景和发布状态。
版本 2.0
最新 2.0 版本: 2.0.39 (2.0.39 通过 Cheeseshop) (更新日志)
SQLAlchemy 2.0.39 使用 Michael Bayer 的 PGP 密钥 ID C4DAFEE1 签名 (使用 gpg --recv-keys C4DAFEE1
导入)。
请务必查看 1.4 到 2.0 的迁移指南,请访问 2.0 版本的新特性?,了解自 1.4 版本以来所做的更改的完整详细信息。
版本 1.4
最新 1.4 版本: 1.4.54 (1.4.54 通过 Cheeseshop) (更新日志)
发布支持: 维护模式
请注意: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 (beta) | 2025-03-11 | 2.0.39 [更新日志] | 当前版本 |
1.4 [文档] [新特性?] | 2020-11-02 (beta) | 2024-09-05 | 1.4.54 [更新日志] | 维护 |
1.3 [文档] [新特性?] | 2018-11-17 (beta) | 2021-03-30 | 1.3.24 [更新日志] | EOL |
1.2 [新特性?] | 2017-07-10 (beta) | 2019-04-15 | 1.2.19 [更新日志] | EOL |
1.1 [新特性?] | 2016-06-16 (beta) | 2018-03-06 | 1.1.18 [更新日志] | EOL |
1.0 [新特性?] | 2015-03-13 (beta) | 2017-08-03 | 1.0.19 [更新日志] | EOL |
0.9 | 2013-12-30 | 2015-07-22 | 0.9.10 [更新日志] | EOL |
0.8 | 2012-12-14 (beta) | 2014-07-22 | 0.8.7 [更新日志] | EOL |
0.7 | 2011-05-21 | 2013-02-08 | 0.7.10 [更新日志] | EOL |
0.6 | 2010-02-03 (beta) | 2012-05-06 | 0.6.9 [更新日志] | EOL |
0.5 | 2008-06-12 (beta) | 2010-01-16 | 0.5.8 [更新日志] | EOL |
0.4 | 2007-08-12 (beta) | 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 仓库中,通常在 main 分支下。当创建“开发中”状态的第一个版本时,状态将变为“beta”。 |
Beta | 当前开发版本的评估版本。这些版本在 Pypi 上可用,但在其版本名称中包含“b”字符,因此根据 pep-0440,除非指定了 --pre 标志,否则 pip 工具不会安装这些版本。“beta”状态通常与“开发中”状态互斥。 |
当前版本 | SQLAlchemy 的当前官方发布版本。正在进行的工作旨在解决回归和错误,这些回归和错误仍然可以在没有重大不稳定风险的情况下应用。正在积极开发的应用程序应始终至少参考“当前”版本。 |
维护 | 当“beta”系列变为“当前版本”时,并且之前的“当前版本”系列变为“维护”时,维护系列存在。维护系列接受遇到的有限的关键错误修复,因为预计正在积极开发的应用程序如果尚未升级到“当前版本”,则将迁移到“当前版本”。一旦下一个开发版本开始,“维护”系列将不再发布,并变为“EOL”。 |
EOL | 此发布版本不再维护,被认为是旧版本。强烈建议针对 EOL 里程碑在生产中使用的应用程序升级到较新版本。 |