Flask2.0 以后的启动和数据迁移

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 考虑到世面上比较少的flask2.0 的启动和 数据迁移方式的博客, 绝大多数都是基础flask1.1 左右的版本, 涉及了flask_script等第三方, 所以记录下Flask2.0 以后 数据迁移方式的一个变化!

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.项目目录

flask3.png

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

flask4.png

2.生成迁移记录文件目录: flask db init

flask db init

flask5.png

3.生成迁移记录文件:flask db migrate -m '1.Stu,Sub'

flask db migrate -m '1.Stu,Sub'

flask6.png

4.迁移数据库:flask db upgrade

flask db upgrade

flask7.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
关系型数据库 API 数据库
盘点Flask与数据库的交互插件——Flask-Sqlalchemy
盘点Flask与数据库的交互插件——Flask-Sqlalchemy
98 0
|
6月前
|
SQL 数据库 Python
记Flask-Migrate迁移数据库失败的两个Bug——详解循环导入问题
Flask-Migrate迁移数据库失败的两个Bug 1、找不到数据库:Unknown database ‘***’ 若还没有创建数据库,该迁移工具不会自动创建。你可以使用SQL命令手动创建一个数据库:
164 0
|
5月前
|
开发者 Python
Flask的一种启动方式和三种托管方式
本文介绍了 Flask 的四种启动方法:原生启动、gevent 启动、tornado 启动以及 waitress 启动。每种启动方法都有其优点和适用场景,除本文四种启动方式外,Flask还支持其他很多种启动方式和托管方式,开发者可以根据自己的需求进行选择。
341 1
|
5月前
|
存储 JSON 安全
Flask四种配置方式
Flask是一个轻量级的Python Web框架,被广泛应用于Web开发中。Flask提供了多种配置方式,可以根据不同的需求和场景进行选择。本篇博客将介绍Flask的几种配置方式,并提供相关代码示例。
74 3
|
5月前
|
JSON 测试技术 API
迁移django3配置新应用
【6月更文挑战第4天】本文介绍创建应用的具体步骤。首先创建名为`posts`的新Django应用,实现blog API功能。并说明如何编写测试用例,并执行迁移。建议为API版本控制,如v1和v2,以便逐步升级。
44 1
|
11月前
|
Linux Docker Python
一条命令迁移 django 服务
一条命令迁移 django 服务
59 0
|
NoSQL 前端开发 关系型数据库
flask框架中的一些常见问题
flask框架中的一些常见问题
|
NoSQL 前端开发 Redis
Flask+Redis实现登录权限管理
Flask+Redis实现登录权限管理
270 0
|
数据库 Python
Python编程:Flask扩展Flask-Migrate迁移数据库
Python编程:Flask扩展Flask-Migrate迁移数据库
142 0
|
数据库 Python
Python编程:Flask数据库扩展Flask-SQLAlchemy
Python编程:Flask数据库扩展Flask-SQLAlchemy
161 0