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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
移动开发 安全 JavaScript
uniapp打包成H5部署到服务器教程
uniapp打包成H5部署到服务器教程
2247 0
|
11月前
|
UED
一些 CSS3 动画的实际应用案例
一些 CSS3 动画的实际应用案例
432 57
|
存储 关系型数据库 MySQL
MySQL周内训参照1、ER实体关系图与数据库模型图绘制
MySQL周内训参照1、ER实体关系图与数据库模型图绘制
364 1
|
10月前
|
存储 分布式计算 资源调度
如何8步完成hadoop单机安装
本文介绍了在Ubuntu 20.04上安装和配置Hadoop 3.3.6的详细步骤。首先更新系统并安装Java环境,接着下载、解压Hadoop并配置环境变量。然后编辑核心配置文件`core-site.xml`和`hdfs-site.xml`,格式化HDFS文件系统,并启动Hadoop服务。最后通过`jps`命令和浏览器访问Web界面验证安装是否成功。Hadoop是一个开源框架,用于分布式存储和处理大规模数据集,其核心组件包括HDFS、MapReduce和YARN。
387 6
|
存储 人工智能 运维
少年云在行动!用“云机房”激活川藏高原学生的AI科普课堂
少年云在行动!用“云机房”激活川藏高原学生的AI科普课堂
672 1
|
缓存 前端开发 算法
前端需要加载一个大体积的文件时,可以这么优化
前端需要加载一个大体积的文件时,可以这么优化
|
关系型数据库 数据库 PostgreSQL
把 PostgreSQL 当做对象数据库使用
本文阐述了如何把 PostgreSQL 当做一个对象数据库使用,及其好处。
2376 0
|
移动开发 JavaScript API
VUE中最简单的js调用微信扫一扫功能
VUE中最简单的js调用微信扫一扫功能
931 0
|
机器学习/深度学习 PyTorch 算法框架/工具
SE 注意力模块 原理分析与代码实现
本文介绍SE注意力模块,它是在SENet中提出的,SENet是ImageNet 2017的冠军模型;SE模块常常被用于CV模型中,能较有效提取模型精度,所以给大家介绍一下它的原理,设计思路,代码实现,如何应用在模型中。
3923 0
|
Java 测试技术 项目管理
Maven安装与eclipse配置和创建Maven项目教程【史上最详细】(一)
Maven安装与eclipse配置和创建Maven项目教程【史上最详细】
1338 0