Flask2.0 的启动和数据迁移
考虑到世面上比较少的flask2.0 的启动和 数据迁移方式的博客, 绝大多数都是基础flask1.1 左右的版本, 涉及了
flask_script等第三方, 所以记录下Flask2.0 以后 数据迁移方式的一个变化!
1.第三方库准备
pip install flask
pip install flask-migrate
pip install flask-sqlalchemy
pip install mysqlclient
2.项目目录
3.项目初次启动
配置文件 settings.py
class Config:
# Mysql数据库配置 用户名:密码@127.0.0.1:3306/数据库名称
SQLALCHEMY_DATABASE_URI='mysql://root:root@127.0.0.1:3306/db_name'
初始化app init_app.py
from flask import Flask
from settings import Config
def create_app():
# 实例化 app
app = Flask(__name__)
# 读取配置文件
app.config.from_object(Config)
return app
主运行文件 app.py
from init_app import create_app
# 实例化 应用对象
app = create_app()
@app.route('/')
def index():
return "<h1>Flask2.0 数据迁移</h1>"
if __name__ == '__main__':
print(app.url_map) # 查看项目全部可用路由
app.run(debug=True)
以上项目启动一般大家都没什么问题,主要是数据迁移问题
4. 项目数据迁移
Mysql客户端-创建数据库
# 1.登录mysql客户端
mysql -u用户 -p密码
# 2.创建数据库
create database db_name charset=utf8;
模型文件 models.stu.py
from init_app import db
# 专业表
class Sub(db.Model):
__tablename__ = 'sub'
id = db.Column(db.Integer, primary_key=True, doc='专业ID', autoincrement=True)
name = db.Column(db.String(32), doc='专业名称')
stu = db.relationship('Stu', backref="stus_object", uselist=False)
# 学生表
class Stu(db.Model):
__tablename__ = 'stu'
stu_id = db.Column(db.Integer, primary_key=True, autoincrement=True, doc='学生ID')
name = db.Column(db.String(32), doc='学生姓名')
age = db.Column(db.Integer, doc='学生年龄')
snum = db.Column(db.Integer, unique=True, doc='学生学号')
sub_id = db.Column(db.Integer, db.ForeignKey('sub.id'), doc='专业外键')
初始化app init_app.py
from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from settings import Config
# 实例化 db
db = SQLAlchemy()
def create_app():
# 实例化 app
app = Flask(__name__)
# 读取配置文件
app.config.from_object(Config)
# db对象绑定app对象
db.init_app(app)
# 管理迁移
Migrate(app, db)
return app
主运行文件 app.py
from init_app import create_app
from models.stu import Stu
# 实例化 应用对象
app = create_app()
@app.route('/')
def index():
return "<h1>Flask2.0 数据迁移</h1>"
if __name__ == '__main__':
print(app.url_map) # 查看项目全部可用路由
app.run(debug=True)
5. 通过终端指令 进行数据迁移
1.通过flask --help 查看 是否有 db指令(如果没有 就是上面代码 顺序问题)
flask --help
2.生成迁移记录文件目录: flask db init
flask db init
3.生成迁移记录文件:flask db migrate -m '1.Stu,Sub'
flask db migrate -m '1.Stu,Sub'
4.迁移数据库:flask db upgrade
flask db upgrade