Django - 是否有可能避免/最大限度地减少迁移的使用?

时间:2015-06-24 18:27:17

标签: python django database-migration ddl

这是一个普遍的问题。我将举例说明我所关注的内容,但我所关注的一般想法是:我是否可以绕过迁移来管理模型的架构?现在,我知道人们喜欢迁移有很多很好的理由,但是我精通DDL SQL并且正在寻找模式更改,并且发现了用于我的用例,我花了更多时间来解决迁移问题,而不是从中受益。我没有使用灯具作为例子,我不需要非常动态的迁移功能a Chef / Puppet,至少在我投入生产之前。

事实上,我发现迁移DDL缺乏透明度非常可怕。

这只是我正在处理的一个示例问题:

class Profile(models.Model):
    rdbname = RDBNAME
    name = models.CharField(max_length=80, blank=True)
    creation = models.DateTimeField(auto_now=True)
    rolecount = models.IntegerField(default=0)
    usercount = models.IntegerField(default=0)

    def __unicode__(self):
        return self.name

    class Meta:
        ordering = ["-rolecount", "name"]

我刚刚添加了这个索引,它出现在迁移中, 但它没有被创建

        unique_together = ("rdbname", "name")

这是输出:

Running migrations:
   No migrations to apply.

但这不是帮助我解决迁移问题的请求。我可以删除受影响的表,让迁移重新创建它们。或者手动添加索引。我通常不想使用 manage.py migrate ,我想知道是否有方法可以从模型中受益,但是用老式的手动方式来管理你的数据库。

一种可能的方法是在“from-scratch / dry-run / sql output”模式下使用makemigrations来创建sql脚本。使用所有drop / create表和索引,就好像数据库是空的一样。如果将它与之前的从头开始进行比较,您会看到任何已更改的内容,您可以创建一个脚本来说明只需添加一列。或者我的索引在我的情况下。

在我的情况下你会在你最喜欢的sql实用程序psql(Postgres)中执行它。

我不能得到一长串解释为什么迁移是猫的睡衣?我已经知道了。但我很高兴听到那些尝试过没有出路的人,这对我来说是一个有用的数据点。我也必须咬紧牙关。

只是想知道是否有其他人设法解决了这些问题。

0 个答案:

没有答案