flask学习-15.flask-migrate数据迁移(代码片段)

上海-悠悠 上海-悠悠     2022-12-01     712

关键词:

前言

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

flask-migrate 迁移数据

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

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 这步可以省略。

set FLASK_APP=app.py  # 设置环境变量指定启动文件

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

export FLASK_APP=app.py  # 设置环境变量指定启动文件

执行相关命令

flask db init  # 生成迁移文件夹  只执行一次
flask db migrate  # ⽣成迁移版本, 保存到迁移文件夹中
flask db upgrade  # 执行迁移

迁移命令

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

flask db init

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

flask db migrate

upgrade 命令执行迁移

flask db upgrade


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

flask框架的学习

---恢复内容开始---第一个flask程序讲解:1.第一次创建项目的时候,要添加flask的虚拟环境。添加虚拟环境的时候,一定要选择到python这个执行文件。比如你的flask的虚拟环境的目录在/User/Virtualenv/flask-env/bin/python。2.flask程序代码... 查看详情

flask学习(二)

安装了flask扩展  以及flask-bootstrap默认情况下,flask在template文件夹寻找模板。flask加载的是Jinja2模板,该模板引擎在flask中由函数render_template集成所以在文件中这样渲染模板fromflaskimportFlask,render_template#...@app.route(‘/‘)defind... 查看详情

flask学习三

使用flask-bootstrap集成Bootstrappipinstall flask-bootstrap安装后即可继承使用Bootsftrap所有文件的基模版 fromflaskimportFlask,render_templatefromflask.ext.bootstrapimportBootstrapapp=Flask(__name__)bootstrap=Boots 查看详情

flask学习

最近学习flask框架,是照着图灵丛书《FlaskWeb开发》来学的。照着第2章写了个简单的框架#_*_coding:utf-8_*_fromflaskimportFlaskapp=Flask(__name__)@app.route(‘/‘)defindex():return‘<h1>hello</h1>‘@app.route(‘/hello‘)defhello():ret 查看详情

flask学习:flask入门(url)

一.flask简介flask是一款非常流行的pythonweb框架,出生于2010年,作者是ArminRonacher,本来这个项目只是作者在愚人节的一个玩笑,后来由于非常受欢迎,进而成为一个正式的项目。目前为止最新的版本是1.0.2flask自2010年发布第一个版... 查看详情

flask学习app代码备份

#!/usr/bin/python#-*-coding:UTF-8-*-fromflaskimportFlask,url_forfromflaskimportrequestfromflask_scriptimportManagerfromflaskimportrender_templatefromthreadingimportThreadimportrequestsimportjsonfromfl 查看详情

flask学习

flask简介Flask是一个基于Python开发并且依赖jinja2模板和WerkzeugWSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应... 查看详情

flask学习笔记——配置管理

1、硬编码:app=Flask(__name__)#app.config是flask.config.Config类的实例,继承自内置数据结构dictapp.config[‘DEBUG‘]=True2、参考——flask.config.Config类:classConfig(dict):"""Worksexactlylikeadictbutprovideswaystofillitfromfileso 查看详情

flask学习

-fromflaskimportFlask+fromflaskimportFlask,render_template-fromflaskimportrequest-fromflaskimportmake_response-fromflaskimportabort-fromflaskimportredirect-#__name__参数决定程序的根目录app=Flask(__name__)-#@app 查看详情

flask学习-42.flask-restx快速入门(代码片段)

前言Flask-restfull是flask框架开发接口的一个框架,Flask-RESTPlus是Flask-restfull升级版,可以生成swagger在线文档了。但是Flask-RESTPlus这个项目不再维护了,迁移到Flask-RESTX了。Flask-RESTX与Flask-RESTPlus的API保持100%兼容。环境安装... 查看详情

flask_appbuilder的学习:安装

Flask_appbuilder学习       通常对于一个后台管理项目来说,大部分的功能都是对数据进行增删改查操作, 而这些操作的代码大致是一样的,唯一变化的是数据,Flask_appbuilder就是为了减少这段重复代码... 查看详情

flask验证登录学习过程---准备

...一直不是特别清楚。趁着年度不是特别忙的时候,特意去学习加强一下。把这个过程记录在此处。首先是规划一个项目,flask+vue的一个小项目。正好回顾、巩固一下自己在今年新掌握的技能,提升自己的开发能力。在搜集怎样将... 查看详情

flask学习(了解一下)(代码片段)

flask学习项目需要,来简单了解一下flask,目标能看懂项目代码就行课程链接:https://www.bilibili.com/video/BV1w64y1d7ZE?from=search&seid=10597422289705144433学习思想:感觉说的很好目标Flask框架介绍核心:Werkze 查看详情

flask学习4http方法

服务端端#!/usr/bin/envpython#encoding:utf-8"""@version:v1.0@author:cxa@file:flask04.py@time:2018/04/1316:06""""""HTTP方法"""fromflaskimportFlask,requestapp=Flask(__name__)@app.route("/")defIndex():return"&l 查看详情

flask学习-27.flask_jwt_extended插件学习current_user的使用(代码片段)

前言flask_jwt_extended最基本的使用只需要掌握三个函数:create_access_token()用来创建Token令牌get_jwt_identity()用来根据令牌取得之前的identity信息jwt_required()这是一个装饰器,用来保护flask节点简单示例以下是官方文档给的简单示... 查看详情

flask验证登录学习过程---实践flask_jwt

flask_jwt应用代码:fromflaskimportFlaskfromflask_jwtimportJWT,jwt_required,current_identityfromwerkzeug.securityimportsafe_str_cmpimportjsonclassUser(object):def__init__(self,id,username,password):self.id= 查看详情

flask框架实现注册加密功能详解flask企业课学习

文章目录​​一.前言​​​​二.werkzeug密码散列值​​​​三.后端详解​​​​3.1准备​​​​3.2创建数据库​​​​3.4register视图函数​​​​3.5使用Flaskform编写register表单代码​​​​四,前端​​​​4.1使用flask-bootstrap模... 查看详情

flask学习-41.flask-restplus入门到放弃(代码片段)

前言Flask-restfull是flask框架开发接口的一个框架,Flask-RESTPlus是Flask-restfull升级版,功能做了一些优化,主要是可以生成swagger在线文档了。环境准备先安装Flask-RESTPlus插件pipinstallflask-restplus目前最新版本v0.13.0官方文档地... 查看详情