django手动数据库迁移

0 database migration django

我更喜欢在Django中手动迁移我的表.因为使用自动化工具会让我无法看到影响.有了影响,我的意思是db与我的模型同步所花费的时间.下面是一个简单的例子:

class User(models.Model):
   first_name = CharField(..)
Run Code Online (Sandbox Code Playgroud)

假设我想添加这个:

class User(models.Model):
       first_name = CharField(..)
       last_name = CharField(..)
Run Code Online (Sandbox Code Playgroud)

我将在生产服务器中执行以下步骤:

  1. 禁用网站流量.
  2. 手动连接到您的数据库服务器,让我们说MySQL并在名为last_name的User表中添加一个字段(当然,确保它与为新模型生成的SQL同步.)
  3. 更新您的模型.
  4. 上传新文件,重启流量.

我对这个场景有两个问题:

  1. 这是Django中手动数据库迁移的首选/可接受方式吗?
  2. 如果我只是通过SQL手动将具有特定默认值的字段添加到User表中,但是不更新模型,我是否仍会获得DatabaseIntegrity异常?

提前致谢,

Mik*_*iak 7

使用所有模式迁移工具(如south),可以明确定义模型的迁移方式.使用这样的工具的好处是:

  • 您的迁移存储在版本控制系统中
  • 有一个文档化的过程来回滚模式迁移
  • 如果另一个开发人员加入了您的项目,您可以将该人员引用到南方文档,而不是解释您自己的hacky解决方案来记录模式迁移.

我想我应该在这里强调一点:尽管南方有自动迁移工具,但如果你使用南方,则不必使用自动迁移.