Django migration vs syncdb
一、migrate 概述
1.7 版本之前, Django 只支持新增模型到数据库中, 通过 syncdb (migrate 的前身) 命令变更或者删除现存的模型是不可能的.
1.7 版本之后, Django 引入了迁移机制:
1.9 版本之后, 彻底移除了 syncdb 命令.
迁移机制引入两条命令:
makemigrations, 根据模型的变更创建新的迁移脚本
migrate, 使迁移生效, 以及未生效时报告它们的状态
你应该把迁移作为数据库架构的版本控制系统.
makemigrations
负责包装模型变更到独立的迁移文件中, 类似于提交代码
migrate
负责应用到数据库中
迁移文件存放在每个应用程序的一个 migrations
目录中, 被设计成提交, 并作为发布的一部分到代码库中; 你应该在你的开发机器上使用它们, 然后在你的同事的机器上运行相同的迁移脚本, staging machines
, 最终应用在生产机器环境.
迁移将在相同的数据集上以相同的方法运行并产生一致的结果, 这意味着你将看到在开发阶段、staging 阶段, 在相同的情况下和生产环境上的表现完全一致.
二、使用 migrate
migrate 的使用非常简单: 修改 model, 比如增加 field, 然后运行
你的 model 会被扫描, 然后与之前的版本作比较, 在 app 的 migrations 目录下生成本次迁移文件.
我们建议查看一下该迁移文件, 确保没有问题, 然后运行:
migrate 命令会进行比较, 并应用该迁移.
Last updated