优化更新
This commit is contained in:
@@ -15,11 +15,7 @@
|
||||
首次部署时,使用初始化脚本一键完成建库、建表、Flask-Migrate stamp:
|
||||
|
||||
```bash
|
||||
# 方式一:直接运行脚本
|
||||
python scripts/setup_db.py
|
||||
|
||||
# 方式二:Make 命令
|
||||
make db-init
|
||||
```
|
||||
|
||||
:::tip 初始化流程
|
||||
@@ -40,7 +36,7 @@ make db-init
|
||||
flask db migrate -m "描述变更内容"
|
||||
|
||||
# 或使用 Make 命令
|
||||
make migrate-revision
|
||||
flask db migrate
|
||||
```
|
||||
|
||||
:::tip 注意事项
|
||||
@@ -56,7 +52,7 @@ make migrate-revision
|
||||
flask db upgrade
|
||||
|
||||
# 或使用 Make 命令
|
||||
make migrate-upgrade
|
||||
flask db upgrade
|
||||
```
|
||||
|
||||
### 回滚迁移
|
||||
@@ -87,7 +83,7 @@ flask db history
|
||||
flask db stamp head
|
||||
|
||||
# 或使用 Make 命令
|
||||
make migrate-stamp
|
||||
flask db stamp head
|
||||
```
|
||||
|
||||
## 跨库数据迁移
|
||||
@@ -111,7 +107,7 @@ make migrate-stamp
|
||||
|
||||
| 目标库 | 驱动包 | 说明 |
|
||||
|:----|:----|:----|
|
||||
| PostgreSQL | psycopg[binary] | psycopg3 |
|
||||
| PostgreSQL | psycopg2-binary | psycopg2 |
|
||||
| SQL Server | pymssql | - |
|
||||
| SQLite | 内置 | 无需额外驱动 |
|
||||
| Oracle | oracledb | thin 模式,无需安装 Oracle Client |
|
||||
@@ -184,12 +180,12 @@ pip install -r requirements.txt
|
||||
# 干跑:核对源库表和行数
|
||||
python scripts/migrate_db.py --dry-run \
|
||||
--src-driver=mysql --src-host=127.0.0.1 --src-port=3306 \
|
||||
--src-user=root --src-pass=root --src-db=djangoadmin.flask.elevue
|
||||
--src-user=root --src-pass=root --src-db=djangoadmin.flask.naivevue
|
||||
|
||||
# 或使用 Make 命令
|
||||
make db-migrate-dry-run ARGS="\
|
||||
--src-driver=mysql --src-host=127.0.0.1 --src-port=3306 \
|
||||
--src-user=root --src-pass=root --src-db=djangoadmin.flask.elevue"
|
||||
--src-user=root --src-pass=root --src-db=djangoadmin.flask.naivevue"
|
||||
```
|
||||
|
||||
### MySQL → PostgreSQL
|
||||
@@ -197,9 +193,9 @@ make db-migrate-dry-run ARGS="\
|
||||
```bash
|
||||
python scripts/migrate_db.py \
|
||||
--src-driver=mysql --src-host=127.0.0.1 --src-port=3306 \
|
||||
--src-db=djangoadmin.flask.elevue --src-user=root --src-pass=root \
|
||||
--src-db=djangoadmin.flask.naivevue --src-user=root --src-pass=root \
|
||||
--dst-driver=postgresql --dst-host=localhost --dst-port=5432 \
|
||||
--dst-db=djangoadmin.flask.elevue --dst-user=postgres --dst-pass=你的密码 \
|
||||
--dst-db=djangoadmin.flask.naivevue --dst-user=postgres --dst-pass=你的密码 \
|
||||
--drop-target-first
|
||||
```
|
||||
|
||||
@@ -207,12 +203,12 @@ python scripts/migrate_db.py \
|
||||
|
||||
```
|
||||
==============================================================
|
||||
[迁移开始] 源: mysql:djangoadmin.flask.elevue → 目标: postgresql:djangoadmin.flask.elevue
|
||||
[迁移开始] 源: mysql:djangoadmin.flask.naivevue → 目标: postgresql:djangoadmin.flask.naivevue
|
||||
[迁移开始] 待迁移 23 张表
|
||||
==============================================================
|
||||
[·] [1/5] 建目标库...
|
||||
· 正在连接 postgres 维护库...
|
||||
· 正在创建目标库 "djangoadmin.flask.elevue"(UTF8)...
|
||||
· 正在创建目标库 "djangoadmin.flask.naivevue"(UTF8)...
|
||||
[✓] [1/5] 建目标库 完成(耗时 947ms)
|
||||
[·] [2/5] 建表结构(23 张表 create_all)...
|
||||
[✓] [2/5] 建表结构 完成(耗时 1.1s),23 张表
|
||||
@@ -245,9 +241,9 @@ python scripts/migrate_db.py \
|
||||
```bash
|
||||
python scripts/migrate_db.py \
|
||||
--src-driver=mysql --src-host=127.0.0.1 --src-port=3306 \
|
||||
--src-db=djangoadmin.flask.elevue --src-user=root --src-pass=root \
|
||||
--src-db=djangoadmin.flask.naivevue --src-user=root --src-pass=root \
|
||||
--dst-driver=mssql --dst-host=localhost --dst-port=1433 \
|
||||
--dst-db=djangoadmin.flask.elevue --dst-user=sa --dst-pass=你的密码 \
|
||||
--dst-db=djangoadmin.flask.naivevue --dst-user=sa --dst-pass=你的密码 \
|
||||
--drop-target-first
|
||||
```
|
||||
|
||||
@@ -260,8 +256,8 @@ python scripts/migrate_db.py \
|
||||
```bash
|
||||
python scripts/migrate_db.py \
|
||||
--src-driver=mysql --src-host=127.0.0.1 --src-port=3306 \
|
||||
--src-db=djangoadmin.flask.elevue --src-user=root --src-pass=root \
|
||||
--dst-driver=sqlite --dst-db=D:/data/djangoadmin.flask.elevue.db \
|
||||
--src-db=djangoadmin.flask.naivevue --src-user=root --src-pass=root \
|
||||
--dst-driver=sqlite --dst-db=D:/data/djangoadmin.flask.naivevue.db \
|
||||
--drop-target-first
|
||||
```
|
||||
|
||||
@@ -276,7 +272,7 @@ python scripts/migrate_db.py \
|
||||
```bash
|
||||
python scripts/migrate_db.py \
|
||||
--src-driver=mysql --src-host=127.0.0.1 --src-port=3306 \
|
||||
--src-db=djangoadmin.flask.elevue --src-user=root --src-pass=root \
|
||||
--src-db=djangoadmin.flask.naivevue --src-user=root --src-pass=root \
|
||||
--dst-driver=oracle --dst-host=localhost --dst-port=1521 \
|
||||
--dst-db=ORCLPDB1 --dst-user=flask --dst-pass=你的密码 \
|
||||
--drop-target-first
|
||||
@@ -362,14 +358,14 @@ CREATE SEQUENCE flask_user_id_seq START WITH <max_id+1>;
|
||||
|
||||
| 场景 | 命令 |
|
||||
|------|------|
|
||||
| 全新安装 | `make db-init` |
|
||||
| 模型变更后生成迁移 | `make migrate-revision` |
|
||||
| 应用迁移 | `make migrate-upgrade` |
|
||||
| 全新安装 | `python scripts/setup_db.py` |
|
||||
| 模型变更后生成迁移 | `flask db migrate` |
|
||||
| 应用迁移 | `flask db upgrade` |
|
||||
| 回滚一次迁移 | `flask db downgrade -1` |
|
||||
| 标记已有库为最新 | `make migrate-stamp` |
|
||||
| 标记已有库为最新 | `flask db stamp head` |
|
||||
| 跨库迁移干跑 | `make db-migrate-dry-run ARGS="..."` |
|
||||
| 跨库迁移执行 | `make db-migrate ARGS="..."` |
|
||||
|
||||
## 总结
|
||||
|
||||
数据库迁移分为结构迁移(Flask-Migrate / Alembic)和数据迁移(`migrate_db.py`)两部分。全新安装用 `make db-init`,模型变更用 Flask-Migrate 自动生成迁移脚本,跨库切换用 `migrate_db.py` 数据泵。建议每次迁移前先干跑确认,生产环境务必做好备份。
|
||||
数据库迁移分为结构迁移(Flask-Migrate / Alembic)和数据迁移(`migrate_db.py`)两部分。全新安装用 `python scripts/setup_db.py`,模型变更用 Flask-Migrate 自动生成迁移脚本,跨库切换用 `migrate_db.py` 数据泵。建议每次迁移前先干跑确认,生产环境务必做好备份。
|
||||
|
||||
Reference in New Issue
Block a user