Django 同步数据库命令syncdb,makemigrations,migrate

时间:2023-05-06 11:00:20

syncdb只支持新增模型到数据库中

2条命令

你将使用2条命令进行迁移和操纵数据库schema:

  • migrate,用来使迁移生效,以及未生效时报告它们的状态。
  • makemigrations,用来根据你对模型做的变更创建新的迁移脚本。

值得注意的是,迁移是创建和运行在每个应用程序的基础上。特别是,对部分应用程序不使用迁移是可能的(称为“不迁移”的应用),这些应用程序将取代模拟只是添加新的模型传统的行为。

你应该把迁移作为你的数据库架构版本控制系统。makemigrations负责包装你的模型变更到独立的迁移文件中-类似于提交代码-migrate负责应用到你的数据库中。

迁移文件存放在每个应用程序的一个“migrations”目录中,被设计成提交,和作为发布的一部分,到代码库中。你应该在你的开发机器上使用它们,然后在你的同事的机器上运行相同的迁移脚本,staging machines,最终在你的生产机器。

注意

在逐个app基础上,覆盖存放迁移脚本的包的名字是可以的,只要修改MIGRATION_MODULES设置。

迁徙将在相同的数据集上以相同的方法运行并产生一致的结果,这意味着你将看到在开发阶段,staging阶段,在相同的情况下,和生产环境上的表现完全一致。

Django会迁移你对模型或字段所做的任何变更 - 甚至是不影响数据库的选项 - 因为唯一能正确的重建一个字段的方式是记录它发生所有的变更,而你可能需要这些选项应用在以后的一些数据迁移中(例如,如果你设置了自定义验证器)。

详细信息参考:https://docs.djangoproject.com/en/dev/topics/migrations/