切换主题
四、ORM模型迁移
一、安装flask-migrate
bash
pip install flask-migrate
二、引入flask-migrate
python
from flask_migrate import Migrate
app = Flask(__name__)
# xxxxxx
# 创建实例对象
db = SQLAlchemy(app)
migrate=Migrate(app,db)
三
、映射
初始化操作只需要执行一次
,其他的操作每次
都要执行
1、初始化数据库迁移环境
flask db init
命令用于创建一个名为 migrations 的目录,该目录用于存储数据库迁移脚本和其他相关文件
python
flask db init
如果报错:
PS E:\code\flask\Flask\草稿\flaskProject1> flask db init
Usage: flask db init [OPTIONS]
Error: Could not locate Flask application. You did not provide the FLASK_APP environment variable.
打开CMD终端
bash
set FLASK_APP=app.py 应用程序入口文件
set FLASK_ENV=development
flask db init
命令执行完成后,会在项目的根路径下生成一个migrations
文件夹,在这个文件夹下有以下文件或文件夹
versions
:文件夹,用于存放后面生成的迁移脚本文件。由于目前没有生成过任何迁移脚本,因此是一个空的文件夹。alembic.ini
: alembic 的配置文件。env.py
:配合Flask 项目进行迁移的 Python 文件。script.py.mako
:生成迁移脚本的模板文件。
2、识别ORM模型的改变,生成迁移脚本
bash
flask db migrate (-m "备注信息")
结果(此时User表和Artice表已被删了)
bash
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added table 'user'
INFO [alembic.autogenerate.compare] Detected added table 'article'
Generating E:\code\flask\Flask\草稿\flaskProject1\migrations\versions\da78b3fcab49_.py ... done
参数
-m
后面跟的是备注信息,通过添加备注信息,可方便以后查看当前迁移脚本做了哪些事情。当然,备注信息不是必需的,如果不想添加,则把参数以及后面的内容都删除即可。
3、运行迁移脚本,同步到数据库
bash
flask db upgrade