新闻和更新
Alembic 0.8.0 发布
2015 年 8 月 12 日 永久链接
Alembic 0.8.0 现在可用。
此版本包含一系列大型重组,旨在提供几个新的扩展 API,这些 API 极大地提高了 Alembic 的可扩展程度。
普通的 Alembic 环境应该不会注意到任何不同,因为我们努力保持完全的向后兼容性。但是,“operations”和“autogenerate”功能都已完全重组,以便在这两个系统之间产生更加开放和集成的流程。
在新系统的基础上,Alembic 中作为“operation”的所有内容现在都被归结为一个对象,称为MigrateOperation。 的子类MigrateOperation包括熟悉的事物,例如AddColumnOp, CreateForeignKeyOP和DropTableOp。 这些对象不代表我们为这些操作发出的 SQL,而是代表在 Alembic 中定义的操作作为接口的一部分。在这些对象上,我们现在挂载所有函数作为相关操作,包括它如何链接到alembic.op.*命名空间,autogenerate 如何在 Python 中渲染它,autogenerate 如何生成针对数据库的“diff”,它如何针对 DDL 后端实现,以及更多内容。
有了这个新系统,我们不一定添加了以前没有的任何新功能,但是我们现在已经围绕这个对象组织了我们所知道的关于“Alembic operation”的所有内容,使用现在公开的 API 将操作与每个操作关联起来。
这意味着您现在可以
- 自由创建您自己的 Alembic 操作,这些操作在alembic.op.*中可用,就像任何其他
- 为这些操作创建您自己的 autogenerate 方案,包括定义如何进行数据库比较以及渲染 Python
- 完全修改 autogenerate 在生成新的迁移脚本时的行为;生成的脚本的全部内容以对象形式传递给用户可用的钩子,然后可以完全重写结构。可以使 autogenerate 操作生成多个文件到不同的目录和/或分支,或者根本不生成任何文件。还提供了一个助手,可以轻松编写特定元素的简短替换。常见的用户请求,例如让 autogenerate 在没有净更改时不生成文件,将“add column”操作转换为“add column, nullable=True” + “alter column set not null”,或支持替代迁移流程,例如将迁移拆分为“expand”和“contract”分支,现在都可以轻松地通过脚本实现,而无需向 Alembic 本身添加新的标志和开关。
- 创建可以接收 autogenerate 流并将其直接作为 Alembic 操作推送到实时数据库或 SQL 脚本的应用程序,甚至无需生成任何修订脚本。
- 为 Alembic 操作创建替代实现系列,例如将它们写出为 JSON 或 XML 格式,或者可能基于它们构建实时的 MetaData 结构。
该版本还包括一些其他修复和功能。特别是,结合操作的重组,还对alembic.op.*命名空间中的位置参数进行了重命名,但是包含了一个向后兼容性转换层,因此大多数项目应该不会受到影响。完整的名称更改列表在更改日志中列出。
在以下位置下载 Alembic 0.8.0:https://pypi.python.org/pypi/alembic/
完整更改日志,包括新功能、错误修复以及所有已更改位置参数名称的 Operations 方法的链接,请访问:http://alembic.readthedocs.org/en/latest/changelog.html#change-0.8.0。
感谢社区中每个人的帮助,以补丁、拉取请求、错误报告和邮件列表评论的形式帮助发布此版本。
SQLAlchemy 1.0.6 发布
2015 年 6 月 25 日 永久链接
SQLAlchemy 1.0.6 版本现已可用。
此版本包含一些新的错误修复和一些小的功能添加,并在社区的高度参与下进行推进。
修复的最关键问题涉及 ORM 的版本控制功能,其中行的版本计数器可能会在行上没有其他净更改时递增;这是从 0.9 回归的。其他一些小问题也是回归或“半回归”(例如,0.9 中存在的一个错误,但在 1.0 中由于更多地使用了某个功能而更有可能遇到)。涉及 SQL ServerVARBINARY类型、“单继承”映射的 ORM 查询以及对 psycopg2cffi 的最新版本(2.7.1)的支持已得到解决。
新功能都是以 Postgresql 为中心的,包括支持设置 Postgresql 索引的存储参数,以及这些参数和索引的“using”算法的反射;修复了ExcludeConstraint构造,以允许更开放的 SQL 表达式,并支持控制在使用“服务器端游标”模式时使用的行缓冲区大小。
1.0.6 的更改日志位于
SQLAlchemy 1.0.6 可在下载页面上找到。