在上一篇学习笔记中 ,定义了各个类之间的关系。本篇笔记就来研究一下,将model类转数据库
一般来说在Flask环境下,使用Flask-Migrate这个扩展,用于简化数据库模型的迁移管理。数据库迁移是在应用开发过程中对数据库模型进行更改的一种方式,以确保数据库结构与应用代码的演变保持同步。
Flask-Migrate 安装配置使用
安装
在终端中运行以下命令安装 Flask-Migrate:
pip install Flask-Migrate
配置
在 Flask 应用中配置 Flask-Migrate、在 Flask 应用的主文件中,导入并配置 Flask-Migrate
配置Migrate可以写在Flask主程序中,也可以单独放在一个manager中,这里采取分离的方式,便于后续管理。
app.py 这个是flask的主文件,文中model模块在上文 Flask-SQLArchemy学习笔记Part01:model定义与关系
from flask import Flask
from model import db
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' # 使用SQLite数据库,可以根据需要更改
db.init_app(app)
if __name__ == '__main__':
app.run(debug=True)
# with app.app_context():
# db.create_all()
manager.py 这个是管理文件,可以用于管理数据库迁移等。如果有需求,一些flask-cli的命令也可以在这里写。
from app import app
from flask_migrate import Migrate
from model import db
# 迁移命令管理与app,建立关系
# sqlite使用此参数render_as_batch=True使用batch操作替换普通操作,因为普通操作不支持表名,列名的改变!
migrate = Migrate(app, db, render_as_batch=True)
# 指定 flask应用使用 manage 模块中名为 app 对象
# Windows环境下定义环境变量
# set FLASK_APP=manage:app
# 类Unix系统下定义环境变量
# export FLASK_APP="manager"
# flask db init
# flask db migrate
# flask db upgrade
使用
在manager代码文件末尾写了使用方法:
- 定义环境变量,设定flask命令
- 使用flask db命令进行数据迁移操作
在终端中执行
首先执行flask db init
进行初始化,生成migrations
目录,该目录内为每次模型变更的升级与降级命令
然后执行flask db migrate
即可创建对应的数据库,本实例中使用sqlite,可以在目录中看到创建的test.db
文件
如果后续model文件有变化,可以重新执行flask db migrate
生成升级文件,然后执行flask db upgrade
进行数据迁移,保证模型与数据库相一致。
总的来说,Flask-Migrate 简化了在 Flask 应用中进行数据库迁移的流程,使开发人员能够轻松地对数据库模型进行更改而不影响已有的数据。
未完待续:
数据操作,以及关系关联演示
marshmallow 的使用 序列化与反序列化
标签:Flask,app,Part02,db,Migrate,flask,数据库 From: https://blog.51cto.com/quietguoguo/8657729