首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Flask 学习-15.flask-migrate数据迁移

Flask 学习-15.flask-migrate数据迁移

作者头像
上海-悠悠
发布2022-08-31 14:49:40
发布2022-08-31 14:49:40
1.4K0
举报

前言

Flask-SQLAlchemy ORM 可以直接操作数据库,可以用db.create_all()代码同步表到数据库。 当我们需要修改表的字段,比如对表新增字段,修改字段的时候需用到flask-migrate 插件来同步迁移数据。

flask-migrate 迁移数据

django 框架里面可以用migrate 命令进行数据库的同步,Flask 框架有个flask-migrate 插件可以实现类似功能。 通过命令行操作实现数据库的同步。

代码语言:javascript
复制
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
# 设置数据库连接地址
DB_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/web'
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
# 是否追踪数据库修改,一般不开启, 会影响性能
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 是否显示底层执行的SQL语句
app.config['SQLALCHEMY_ECHO'] = True

# 初始化db,关联flask 项目
db = SQLAlchemy(app)
# 迁移组件初始化
Migrate(app, db)

# 创建模型
class Students(db.Model):
    __tablename__ = 'students'  # 数据库表名

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    fullname = db.Column(db.String(30))
    nickname = db.Column(db.String(30))

    def __repr__(self):
        return f"<Students(name='{self.name}', fullname='{self.fullname}', nickname='{self.nickname}')>"

class Users(db.Model):
    __tablename__ = 'user'  # 数据库表名

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30))

    def __repr__(self):
        return f"<Users(id='{self.id}', name='{self.name}')>"

执行迁移命令,先设置环境变量, 如果启动文件是app.py 这步可以省略。

代码语言:javascript
复制
set FLASK_APP=app.py  # 设置环境变量指定启动文件

windows用set设置环境变量,linux 用export 设置环境变量

代码语言:javascript
复制
export FLASK_APP=app.py  # 设置环境变量指定启动文件

执行相关命令

代码语言:javascript
复制
flask db init  # 生成迁移文件夹  只执行一次
flask db migrate  # ⽣成迁移版本, 保存到迁移文件夹中
flask db upgrade  # 执行迁移

迁移命令

init 命令执行后,会生成migrations目录

代码语言:javascript
复制
flask db init

migrate 命令生成迁移脚本,保存到迁移文件夹中versions目录

代码语言:javascript
复制
flask db migrate

upgrade 命令执行迁移

代码语言:javascript
复制
flask db upgrade

执行完upgrade 命令才会在数据库中生成表

2022年第 12期《python接口web自动化+测试开发》课程,9月17号开学!

本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00

报名费:报名费3000一人(周期3个月)

联系微信/QQ:283340479

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • flask-migrate 迁移数据
  • 迁移命令
    • 报名费:报名费3000一人(周期3个月)
    • 联系微信/QQ:283340479
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档