文章目录
- [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控制迁移归属