文章目录
- [django 数据库迁移](#django 数据库迁移)
-
- [1. 为某个应用生成迁移文件](#1. 为某个应用生成迁移文件)
- [2. 只迁移某个应用](#2. 只迁移某个应用)
- [3. 指定数据库迁移](#3. 指定数据库迁移)
- [4. 查看迁移执行情况](#4. 查看迁移执行情况)
- [5. 回滚某个应用的迁移](#5. 回滚某个应用的迁移)
django 数据库迁移
1. 为某个应用生成迁移文件
假设应用名叫 wmsapp
:
bash
python manage.py makemigrations wmsapp
会在 wmsapp/migrations/
下生成迁移文件(例如 0001_initial.py
)。
2. 只迁移某个应用
执行迁移时加上应用名即可:
bash
python manage.py migrate wmsapp
默认会用 default
数据库,但因为你有多个库,还需要告诉 Django 用哪个数据库。
3. 指定数据库迁移
Django 提供了 --database
参数,例如迁移到 wms
(MySQL):
bash
python manage.py migrate wmsapp --database=wms
如果你的 routers.py
已经写了 allow_migrate
规则,Django 在不加 --database
的情况下也会自动把 wmsapp
的迁移打到 wms
,但是显式指定更安全。
4. 查看迁移执行情况
bash
python manage.py showmigrations wmsapp --database=wms
会列出该应用在 wms
数据库的迁移状态。
5. 回滚某个应用的迁移
比如回退到初始状态(不保留表):
bash
python manage.py migrate wmsapp zero --database=wms
✅ 总结:
makemigrations app_name
→ 生成迁移文件migrate app_name --database=xxx
→ 执行到指定数据库- 多数据库项目里最好在
routers.py
控制迁移归属