新闻和更新

Alembic 0.8.0 发布
永久链接

Alembic 0.8.0 现已可用。

此版本包含一系列重大重组,旨在提供几个新的扩展 API,从而极大地提高 Alembic 的可扩展性。

普通的 Alembic 环境应该不会注意到任何不同,因为我们努力保持完全的向后兼容性。然而,“操作”和“自动生成”功能都已完全重组,以便在这两个系统之间产生更加开放和集成的流程。

在新系统的基础上,Alembic 中作为“操作”的所有内容现在都被归结为一个对象,称为MigrateOperation。子类包括MigrateOperation包括熟悉的内容,例如AddColumnOp, CreateForeignKeyOP,和DropTableOp。这些对象不代表我们为这些操作发出的 SQL,而是代表 Alembic 中定义为接口一部分的操作。在这些对象上,我们现在挂载所有函数作为相关操作,包括它如何链接到alembic.op.*命名空间,自动生成如何在 Python 中渲染它,自动生成如何生成针对数据库的“差异”,它如何在 DDL 后端实现,以及更多内容。

使用这个新系统,我们不一定添加了以前没有的任何新功能,但我们现在已经围绕这个对象组织了我们所知道的关于“Alembic 操作”的所有内容,使用现在公开的 API 将操作与每个操作关联起来。

这意味着您现在可以

  • 自由创建您自己的 Alembic 操作,这些操作在alembic.op.*中成为一流的函数,就像任何其他函数一样
  • 为这些操作创建您自己的自动生成方案,包括定义如何进行数据库比较以及渲染 Python
  • 完全修改自动生成在生成新的迁移脚本时的行为;生成的脚本的全部内容以对象形式传递到用户可用的钩子,然后可以完全重写结构。自动生成操作可以生成多个文件到不同的目录和/或分支,或者根本不生成文件。还提供了一个助手,可以轻松编写特定元素的简短替换。常见的用户请求,例如让自动生成在没有净更改时不生成文件,将“添加列”操作转换为“添加列,nullable=True”+“更改列设置非空”,或者支持替代迁移流程,例如将迁移拆分为“扩展”和“收缩”分支,现在都可以轻松地通过脚本实现,而无需向 Alembic 本身添加新的标志和开关。
  • 创建可以接收自动生成流并将其直接作为 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

感谢社区中以补丁、拉取请求、错误报告和邮件列表评论形式帮助发布此版本的每个人。