首页 > 数据库 >Flask ORM 学习笔记Part02:Flask-Migrate的使用,数据库创建与数据导入

Flask ORM 学习笔记Part02:Flask-Migrate的使用,数据库创建与数据导入

时间:2023-12-02 16:33:04浏览次数:50  
标签:Flask app Part02 db Migrate flask 数据库

在上一篇学习笔记中 ,定义了各个类之间的关系。本篇笔记就来研究一下,将model类转数据库

一般来说在Flask环境下,使用Flask-Migrate这个扩展,用于简化数据库模型的迁移管理。数据库迁移是在应用开发过程中对数据库模型进行更改的一种方式,以确保数据库结构与应用代码的演变保持同步。

Flask-Migrate 安装配置使用

安装

在终端中运行以下命令安装 Flask-Migrate:

pip install Flask-Migrate

配置

在 Flask 应用中配置 Flask-Migrate、在 Flask 应用的主文件中,导入并配置 Flask-Migrate

配置Migrate可以写在Flask主程序中,也可以单独放在一个manager中,这里采取分离的方式,便于后续管理。

app.py 这个是flask的主文件,文中model模块在上文 Flask-SQLArchemy学习笔记Part01:model定义与关系

from flask import Flask
from model import db

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'  # 使用SQLite数据库,可以根据需要更改
db.init_app(app)

if __name__ == '__main__':
    app.run(debug=True)

# with app.app_context():
#     db.create_all()

manager.py 这个是管理文件,可以用于管理数据库迁移等。如果有需求,一些flask-cli的命令也可以在这里写。

from app import app
from flask_migrate import Migrate
from model import db

# 迁移命令管理与app,建立关系
# sqlite使用此参数render_as_batch=True使用batch操作替换普通操作,因为普通操作不支持表名,列名的改变!
migrate = Migrate(app, db, render_as_batch=True)

# 指定 flask应用使用 manage 模块中名为 app 对象
# Windows环境下定义环境变量
# set FLASK_APP=manage:app
# 类Unix系统下定义环境变量
# export FLASK_APP="manager"
# flask db init
# flask db migrate
# flask db upgrade

使用

在manager代码文件末尾写了使用方法:

  1. 定义环境变量,设定flask命令
  2. 使用flask db命令进行数据迁移操作

在终端中执行

Flask ORM 学习笔记Part02:Flask-Migrate的使用,数据库创建与数据导入_数据库

首先执行flask db init 进行初始化,生成migrations目录,该目录内为每次模型变更的升级与降级命令

然后执行flask db migrate 即可创建对应的数据库,本实例中使用sqlite,可以在目录中看到创建的test.db文件

Flask ORM 学习笔记Part02:Flask-Migrate的使用,数据库创建与数据导入_flask-migrate_02

如果后续model文件有变化,可以重新执行flask db migrate生成升级文件,然后执行flask db upgrade进行数据迁移,保证模型与数据库相一致。

总的来说,Flask-Migrate 简化了在 Flask 应用中进行数据库迁移的流程,使开发人员能够轻松地对数据库模型进行更改而不影响已有的数据。

未完待续:

数据操作,以及关系关联演示

marshmallow 的使用 序列化与反序列化

标签:Flask,app,Part02,db,Migrate,flask,数据库
From: https://blog.51cto.com/quietguoguo/8657729

相关文章

  • Flask实践-使用pymysql时解决SQL注入问题
    最近在尝试使用flask编写一个网站防篡改监测平台,开始只注意功能,未注意注入问题,开始的SQL执行是拼接的方式,导致SQL注入: 用报错注入:修改为参数化查询: ......
  • Flask实践--Flask蓝图实现各功能模块分离
    最近在尝试使用flask编写一个网站防篡改监测平台,写到后面发现各种模块工作都杂糅在一个py文件中,尝试用蓝图blueprint解决。比如单独写一个登出举例,新建logut.py:  app.py中: 前端; ......
  • flask接受图像,并保存到本地
    当服务端接收到图像后,要保存图像到本地可以使用Python的io模块来辅助处理接收的图像数据。以下是对服务端代码的修改,使其能够接收图像并保存到本地fromflaskimportFlask,requestimportbase64importiofromPILimportImageapp=Flask(__name__)defprocess_image......
  • 6How To Use Messages With Flask - Flask Fridays #6 10:43
    消息闪现  消息闪现{%formessageinget_flashed_messages()%}<divclass="alertalert-successalert-dismissiblefadeshow"role="alert">{{message}}<buttontype="button"class="btn-close"data-......
  • python flask下载功能
    前言flask下载功能一、约定要下载文件绝对路径:/tmp/flask_web/download/test.tar.gzpy主程序:/tmp/flask_web/main.py二、main.py内容@app.route("/down/<path:filename>",methods=['GET','POST'])defdownload_file(filename):try:#......
  • 【Flask使用】第7篇:Flask数据库使用。0基础md文档集合(附代码,可自取)
    本文的主要内容:flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用:宏、继承/包含、模板中特有变量和函数、Flask-WTF表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy、增删改查操作、案例、蓝图、单元测......
  • Flask(2)-动态路由&转换器
    动态路由[email protected]("/user/<name>")2defshow_user(name):3return"Mynameis%s"%name这里定义了动态路径:/user/<name>。函数有一个参数:name。 转换器flask中,参数类型默认是string,也可以指定其类型[email protected]("/age/<int:age>")2de......
  • Flask-SQLAlchemy flask-migrate mysql用法记录
    一、简介二、内容三、问题 一、简介Flask-SQLAlchemy是一个为Flask应用增加SQLAlchemy支持的扩展。它致力于简化在Flask中SQLAlchemy的使用。SQLAlchemy是目前python中最强大的ORM框架,功能全面,使用简单。ORM优缺点优点有语法提示,省去自己拼写SQL,保......
  • Flask 运用Xterm实现交互终端
    Xterm是一个基于XWindowSystem的终端仿真器(TerminalEmulator)。Xterm最初由MIT开发,它允许用户在XWindow环境下运行文本终端程序。Xterm提供了一个图形界面终端,使用户能够在图形桌面环境中运行命令行程序。而xterm.js是一个用于在浏览器中实现终端仿真的JavaScript库。它允许在W......
  • 我想问下为什么我这个flask查询功能实现不了?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【乔.】问了一个Python web开发的问题,一起来看看吧。问题描述:大佬们,我想问下为什么我这个查询功能实现不了<!DOCTYPEhtml><html><head><title>SearchResults</title></head><body><h1>SearchResults</h1><!--添加......