28

我很喜欢 Rails 的数据库迁移管理系统。它不是 100% 完美的,但它可以解决问题。Django 没有提供这样的数据库迁移系统(还没有?),但是有许多开源项目可以做到这一点,例如 django-evolution 和 south。

所以我想知道,您更喜欢哪种 django 数据库迁移管理解决方案?(请每个答案选择一个)

4

8 回答 8

22

我一直在使用South,但Migrator看起来也很有希望。

于 2009-01-11T10:06:08.630 回答
9

迁移看起来又好又简单。

于 2009-01-08T23:05:58.237 回答
6

如果您使用SQLAlchemy作为 ORM,那么事实上的标准是Alembic

另一个没有提到的选择是yoyo-migrations

于 2016-01-29T20:08:33.797 回答
3

我们在工作中使用 Django,并且一直在使用dmigrations。虽然它有其怪癖,但到目前为止它一直很有用。一些特点:

  • 它使用数据库中的表来跟踪已应用的迁移。
  • 因为它知道哪些已被应用,所以您可以向上和向下迁移。
  • 它集成manage.py为命令。
  • 单独的迁移脚本是 Python,但如果您的迁移逻辑是纯 SQL,则 dmigrations可以很容易地生成 SQL 并执行它。

一个问题是它目前只支持 MySQL。但是,我们的一个人对其进行了本地破解以支持我们使用的 PostgreSQL。我记得,hack 并没有那么广泛,所以破解它以支持其他 RDBMS 应该不难。

于 2009-01-10T22:43:59.507 回答
2

我喜欢django-evolution

优点:

  • 干净的设计
  • 不需要 SQL
  • 灵活的
  • 安装简单
  • 便于使用

缺点:

  • 迁移在代码库中不固定
  • 存在意外运行迁移两次的风险
于 2009-01-08T22:59:09.720 回答
1

除了 South、dmigrations、django-evolution 和 Migratory,我想我会添加simplemigrations作为我见过的另一个自动化 Django 迁移的工具。

我过去使用过其中的三个,但现在手动迁移。由于添加了最新功能,我正在考虑再次尝试 South。

于 2009-03-19T22:18:30.707 回答
1

请注意,自 2009 年以来,除了 South 之外,这里提到的几乎所有项目都已死亡。南方是事实上的标准,无论好坏。

于 2012-02-02T16:41:51.103 回答
0

我一直在使用simple-db-migrate

优点:

  • 它允许我回滚迁移(如果其他人也这样做,IDK)。
  • 与 manage.py 集成
  • 懂 SQL 的人都可以创建迁移
  • 它不会运行两次迁移:应用程序将迁移信息(时间戳、查询等)写入表中

缺点:

  • 如果您添加的迁移时间戳低于安装的最新迁移,则此迁移不会运行
  • 仅支持 MySQL
于 2012-03-02T14:22:48.853 回答