Flask09——数据库迁移

Azure SQL Database创建与删除的云原生实践指南 Azure SQL Database并非传统SQL Server的云化移植,而是一种基于ARM资源模型的PaaS服务——其创建与删除本质是资源生命周期管理,而非单纯T-SQL操作。理解资源组、逻辑服务器、数据库三层依赖关系,是避免误删、费用失控和连接失败的前提;掌握Serverless与Provisioned服务层级差异、TDE默认加密机制、PITR备份链行为等核心原理,可显著提升AI元数据平台、沙箱环境及生产系统的稳定性与成本效率。本文聚焦真实工程场景,覆盖Portal图形化部署、CLI批量自动化、安全删 阅读详情

我们在开发软件的时候往往会有这样的情况,数据库里面的表不是一下子全部键好的,往往是随着开发功能的增加,会不断的增加新表,新的字段,而我们之前也讲了清空表的语句drop_all,创建表的语句creat_all,我们好像可以通过这两个语句对表进行更改,添加新的字段,新的表。
但是,大家有没有想过一个问题,我们每次要添加新的字段的时候都要将表数据全部清空,这就意味着我们要删除之前的数据,再重新建立表结构,再重新插入新的数据,当然如果是在我们的开发测试阶段,这种操作姑且还是可以接受的,而当我们的产品正式上线运行了,我们又不得不加入新的字段呢?这个时候清空表?恐怕是不能被接受的吧。
所以我们就需要有一个工具来帮我们在不影响原有表结构和数据的情况下,增加字段到表当中,或者增加新表。而这个工具就是我们的数据库迁移工具migrate。这个工具集中包含了大量可以通过命令行来操作表的指令。让我们可以很轻松的添加新的表,新的字段。
而在我们介绍这个迁移工具之前,我们先需要了解另外一个库:flask_script库,这个库首先帮我们实现了让我们可以在命令行调用pytho文件中写的函数,实现了这个功能之后我们就可以用同样的方式在命令行当中去操作表了,而我们的迁移工具的指令实际上也是通过python文件中的函数来实现的。所以就相当于flask_script帮我们完成了命令行操作文件中函数的事情,而flask_migrate中就集合了大量的可以操作数据库的指令。两者完美的结合,就使得我们可以通过命令行操作数据库了。
好让我们先来了解怎么通过flask_script实现命令行运行python中函数的。
首先通过命令 pip install flask-script
新建文件 script1.py 输入以下代码,代码注释如下:

from flask import Flask
from flask_script import Manager  # 引入脚本命令行类


app = Flask(__name__)

manager = Manager(app=app)  # 实例化脚本命令行类,并传递app


@manager.command  # 通过装饰器将普通函数变成可以通过命令行运行的函数
def cmd_hello():
    print('命令行打印hello')


if __name__ == '__main__':
    manager.run()

然后,在命令行找到此文件所在位置,输入命令python script1.py cmd_hello 并运行。如果你能看到命令行输出:命令行打印hello 代表已经成功通过命令行运行了函数cmd_hello了。

上面我们已经实现了通过命令行运行函数的功能,我们还可以将一个函数集,比如将操作数据库的命令放到一个文件当中,然后再将命令添加到manager当中,并增加前缀,这样我们就可以实现通过命令行调用一个文件当中所有函数的功能了。代码如下:

# 文件script2
from flask import Flask
from flask_script import Manager
from cmd_db import dbManager


app = Flask(__name__)

manager = Manager(app=app)

manager.add_command('db', dbManager)  #


@manager.command
def cmd_hello():
    print('命令行打印hello')


if __name__ == '__main__':
    manager.run()
# 与script2.py同级目录下文件cmd_db.py文件
from flask_script import Manager

dbManager = Manager()  # 不是作为主文件运行,所以不用传入app


@dbManager.command
def connect_mysql():
    print('连接mysql数据库')


@dbManager.command
def select_one():
    print(('查询单个'))

这样我们就可以通过命令:python script2.py db connect_mysql 和 python script2.py db select_one来执行上面两个函数了。
结合上面例子的思想,我们也可以用同样的道理将迁移命令引入进来。代码如下:

# apps.py文件
"""Todo 将实例化app和绑定插件到app上的操作单独放在一个文件当中"""
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config.from_object('setting')

db = SQLAlchemy(app=app)
# setting.py文件
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:@127.0.0.1:3306/test1?charset=utf8'
SQLALCHEMY_ECHO = True
SQLALCHEMY_TRACK_MODIFICATIONS = False
SECRET_KEY = '123'
# models.py
from apps import  *


class Article(db.Model):
    id = db.Column(db.Integer, primary_key=True, comment='主键ID')
    title = db.Column(db.String(30), nullable=False, comment='文章标题')
# script3.py文件
from apps import *

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand  # 引入迁移库和迁移命令集
from models import *  # 引入模型


manager = Manager(app=app)  # 实例化命令行类

migrate = Migrate(app=app, db=db)  # 实例化迁移类

manager.add_command('db', MigrateCommand)  # 将迁移命令添加到可以通过命令行执行的命令中,并加前缀db

if __name__ == '__main__':
    manager.run()  # 运行命令行脚本

然后再命令行依次执行如下三个命令:
①、python script3.py db init 初始化迁移文件,执行之后,会生成迁移文件夹,记录初始化的版本。
②、python script3.py db migrate 生成与models文件当中定义的模型的迁移文件,记录了数据库的表、字段信息等。
③、python script3.py db upgrade 将迁移文件映射到数据库生成数据库的表

如果以上三个命令执行之后,成功在数据库创建了article表,并且包含两个字段id和title的话,就说明创建表成功。
修改models文件。

# models.py文件
class Article(db.Model):
    id = db.Column(db.Integer, primary_key=True, comment='主键ID')
    title = db.Column(db.String(30), nullable=False, comment='文章标题')
    content = db.Column(db.Text, comment='文章内容')

重复执行
python script3.py db migrate 和 python script3.py db upgrade 命令,如果看到content字段被增加成功,那就说明数据库迁移成功。

Flask连接MongoDB实战:PyMongo配置、连接池与JSON文档处理 NoSQL数据库指不依赖固定Schema和强事务的数据存储范式,其核心价值在于灵活应对结构多变、迭代频繁的业务场景。MongoDB作为典型NoSQL代表,原生支持BSON/JSON数据模型,与Python Web框架Flask天然契合——Flask轻量路由接收JSON请求,PyMongo直连驱动实现零转换存取,全程避免ORM抽象损耗。该技术组合广泛应用于内容管理、IoT数据采集、用户行为日志等字段动态性强、查询以文档为中心的系统。本文聚焦Flask+MongoDB落地关键:Windows环境安装排障、PyM 阅读详情

相关推荐

Python全栈实战:从零构建企业级考勤系统(Flask+SQLite+Vue)

在数据处理与自动化办公领域,Python凭借其简洁语法和丰富的库生态,已成为快速开发实用工具的首选语言。其核心原理在于通过清晰的逻辑结构和高效的库支持,将复杂业务需求转化为可维护的代码实现,技术价值体现在能显著提升内部流程效率与数据准确性。典型的应用场景包括企业内部管理系统开发,如考勤、报表生成等自动化工具。本文以构建一个轻量级电子考勤系统为例,深入探讨了如何利用Flask框架搭建RESTful API后端,并结合SQLite数据库进行数据持久化管理,同时通过Vue.js实现前端交互,完整演示了从数据库设计

weixin_30254435的博客 369

09_Flask脚本 flask_script的使用manage.py Flask_Migrate迁移数据库

文章目录1 集成Python shell1.1 flask-script的用法:1.1.1 实例:flask-script的简单实现1.1.1 命令添加方式:第一种(无参命令):第二种(有参命令):第三种(子命令):2 项目重构2.1 解耦配置信息以及模型文件信息触发循环导入问题2.2 重构项目解决循环导入问题3 使用Flask-Migrate迁移数据库3.1 Flask-Migrate的用法:实例3.1.1:配置Flask_Migrate**迁移脚本命令** 1 集成Python shell 在我们实际的

coderge's 优快云 Blog. 1227

flask高频面试题

Flask使用签名的cookie来存储会话数据。如何在Flask中处理跨域请求(CORS)?静态文件(CSS/JS/图片)无法加载。如何在Flask中处理数据库迁移?如何在Flask中实现用户认证?Flask应用无法连接到数据库。表单提交时出现CSRF验证错误。Flask如何处理文件上传?Flask如何处理表单验证?来获取上传的文件,并使用。Flask如何处理会话?请求超时导致应用无响应。数据库迁移时出现冲突。扩展来处理表单验证。

闲人编程的博客 1613

Dify 数据库创建迁移源码解析

通过对源码的分析,发现在 Dify 项目中,数据库迁移管理 使用和来实现。通过这两个工具,开发者能够方便地追踪、管理和应用数据库模式的变化,从而保持数据库与应用代码的一致性。

一次次探索代码无限可能的旅程,专注于前端、后端、服务器及AI大模型的分享和交流。与我一起踏上这段无尽的技术之旅吧! 2726

IGBT基础知识

IGBT

u010783226的专栏 1万+

【数字电源/MATLAB+PLECS】如何进行 Buck 数字电源仿真(二)PLECS 搭建开环 Buck 功率级

本文介绍了如何在PLECS中搭建开环Buck功率级模型,验证数字电源设计的基本思路。重点内容包括: 明确开发顺序:先开环验证功率级,再闭环设计控制器 搭建关键组件:输入电源、PWM模块、MOSFET开关、续流二极管、LC滤波电路及负载 设置初始参数:24V输入、12V输出、200kHz开关频率、22μH电感、100μF电容 测量关键波形:MOSFET Vds验证开关动作、电感电流纹波和输出电压稳态值 提供完整仿真模型和GitHub资源,便于读者复现验证 文章强调通过开环测试先确保功率级正确性,为后续闭环控制

weixin_43234123的博客 1226

2021-09-18 flask_sqlalchemy 与MYSQL数据库映射方式的用法

flask_sqlalchemy 是绑定数据库并进行映射的库 使用这个库的必要流程如下 1. from flask_sqlalchemy import SQLAlchemy # 引入函数 2. db=SQLAlchemy() # 实例化 3. db.init_app(app)#绑定到主APP 4. class User(db.Model):#定义下模型类,这里注意继承db.Model ******************** ***********

gaoke11240的博客 507

从KVM虚拟化到Openstack云化架构综述

目录 摘要 OpenStack的虚拟化技术 OpenStack架构介绍 Nova Swift KeyStone Neutron Glance Cinder Ceilometer Heat 摘要 这两年的工作中,接触到公有云和私有云的项目还不少。起初对于Openstack的了解,仅停留在其几大组件的交互上,如Nova、Neutron、Glance等,以及对各大云厂商功能点上...

liyunpeng229的博客 2051

4 Flask mega-tutorial第4章 数据库 Database

如需转载请注明出处。 win10 64位、Python 3.6.3、Notepad++、Chrome 67.0.3396.99(正式版本)(64 位) 注:作者编写时间2017-12-27,linux、python 3.5.2 以下内容均是加入自己的理解与增删,以记录学习过程。不完全照搬作者Miguel Grinberg的博客,但版权属于作者,感谢他提供免费学习的资料。 参考: 作者博客...

神是念着倒 2184

模型算力需求估算

(Billion Parameters,简称B)和训练/推理的计算任务复杂度,结合硬件计算能力(例如每秒浮点运算次数,FLOPS)来估算。以下是详细的方法和公式说明,以及实际的计算示例。算力需求的估算依赖于参数量、模型架构及硬件性能,结合训练/推理场景的特定要求来计算。通过上述公式和示例,我们可以定量分析不同任务的算力需求,并合理配置硬件资源以优化运行效率。结论:推理任务相对较轻,单台H100可以在30秒内完成此任务。推理算力需求一般远低于训练,因为只需要执行前向传播。,可以将训练时间缩短到约。

形上得其象,形下合于数;阴阳自济,玄理自明。 8962

蠕虫病毒代码(纯属参考,请勿用于非法事件)

1.介绍蠕虫病毒 蠕虫病毒是一种常见的计算机病毒,是无须计算机使用者干预即可运行的独立程序,它通过不停的获得网络中存在漏洞的计算机上的部分或全部控制权来进行传播。 计算机病毒是指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据和恶意篡改系统. 影响计算机使用并且能够自我复制的一组计算机指令或者程序代码 中文名:蠕虫病毒 传染方式:网络和电子邮件 外文名:Worm virus 类型:计算机病毒 2.代码(建议使用虚拟机,否则你的计算机将会就地报废,使用时要关闭电脑病毒保护,否则程序会...

Kenny20211105的博客 2万+

09-1-数据库扩展包flask-sqlalchemy

利用sqlalchemy 将模型类转换为SQL语句,通过MySQL 数据驱动,交由数据执行,返回的结果再由sqlalchemy 控制 ORM 模型 1_使用sqlalchemy的配置 在Flask中使用mysql数据库,需要安装一个flask-sqlalchemy的扩展。pip install flask-sqlalchemy要连接mysql数据库,仍需要安装flask-mysqld...

weixin_34110749的博客 140

物联网开发笔记(34)- 使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

zhusongziye的博客 1万+

flask知识点

文章目录falsk知识点-101.Flask类创建对象的默认参数02.url_map03.视图函数指定访问方式(methods)04.url_for05.redirect重定向06.jsonify07.参数类型08.自定义类型09.abort主动抛出异常10.debug里的参数11.app运行加载参数12.request请求知识点-201.请求勾子02.响应内容response03.状态保持04.上下文(g)05.扩展包flask_script06.template模板07.filter过滤器08.自定义过

ZbyFt 1589

CMOS Sensor的调试经验分享

我这里要介绍的就是CMOS摄像头的一些调试经验。 首先,要认识CMOS摄像头的结构。我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头、感应器和图像信号处理器构成。一般情况下,集成好的模组我们只看到外面的镜头、接口和封装壳,这种一般是固定焦距的。有些厂商只提供芯片,需要自己安装镜头,镜头要选择合适大小的镜头,如果没有夜视要求的话,最好选择带有红外滤光的镜头,因为一般的sensor都...

camerall 3764

把 MANDT 锁进保险箱:ABAP Client Handling 与 Client Isolation(聚焦 AMDP 的 Client Safety )

本文探讨了ABAP系统中Client Handling与Client Isolation机制的演进,重点分析了AMDP环境下多租户隔离的风险与解决方案。传统ABAP SQL/CDS通过隐式Client过滤提供安全保障,而AMDP因其原生SQLScript特性容易绕过隔离机制。文章对比了旧时代依赖开发自觉的传参方式与新时代通过AMDP OPTIONS强约束的语法方案,详细介绍了CLIENT INDEPENDENT和CDS SESSION CLIENT DEPENDENT两种编译期安全机制,阐述了USING列表

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 343

2021-09-12 从虚拟环境到MYSQL 映射绑定配置

在123目录下再创建虚拟环境123 c:/123 virtualenv 123 安装FLASK 1.12 pip install flask==1.1.2 安装pymysql 1.0.2 pip install pymysql 安装flask-script pip install flask-script 安装flask-sqlalchemy pip install flask-sqlalchemy 安装 flask-migrate 注意使用版本2.5.3 否则没有MigrateCom

gaoke11240的博客 381

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Flask学习推荐站

站1 今天遇到的一个bug,折腾了一早上,不过解决了,还是很高兴 摘要:1、总结出错的问题 当我在用flask做项目的时候,需要创建表,创建表的时候,我用的是Flask-Migrate组件,直接用python manage.py init ,python manage.py migrate ,python manage.py upgrade这样的命令就可以创建表。 我的 阅读全文 poste...

一越王超的博客 485

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

flask

flaskStudy 环境:anaconda (python3.7), windows10 hello world 首先创建三个目录 app app/templates :放模板文件(html) app/static:静态资源(图片,css,js等) 创建几个文件 run.py:项目启动文件(入口文件) migrate.py:数据库迁移文件 app/__init__...

weixin_30755393的博客 150

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

腾讯云部署flask

1.环境配置 1.安装nginx 安装 $ sudo apt-get install nginx 运行及停止 /etc/init.d/nginx start #启动 /etc/init.d/nginx stop #停止 配置文件 编辑文件:/etc/nginx/sites-available/default # 如果是多台服务器的话,则在此配置,并修改 location 节...

非空盒子的博客 725

Flask错误收集《2018-01-09更新》

一、pydev debugger: process XXXXX is connecting 这个错误网上找了很多资料都无法解决,尝试过多种方法后,对我来说,下面这个措施能解决掉。 1. 如果开了翻墙软件,把翻墙软件关了就行。。。(没错,在我这是亲测) 二、Warning: (1366, “Incorrect string value: ‘\xD6\xD0\xB9\xFA\...

Adward_Z的博客 892

vue基于Python的垃圾分类系统 r09j6_Pycharm django flask

本课题遵循软件工程开发周期进行,包括需求分析、总体方案制定、详细设计和功能规划、编程实现、调试等;研究方法和研究步骤基本合理,难度适中,本选题是学生所学专业知识的延续,符合学生专业发展方向,对于提高学生的基本知识和技能以及钻研能力有益。该学生能够在预定时间内完成该课题的设计。研究的选题立意明确,结构合理,研究内容充实,研究方法准确有效。前端页面的设计与数据的直观可视化展示。所开的系统能正常运行在所选的平台上,并实现相关模块的功能。

QQ_188083800的博客 572

python flask api 统计_python flask api

[python作业AI毕业设计博客]深入理解Flask 中英文版-英文更新至2018第2版 Mastering Flask Web Development 2nd Edition - 2018.Pdf深入理解Flask - 2016.pdfFlask 是在Python 用户中最为流行的Web 开发框架。《深入理解 Flask》从一个简单的Flask 项目入手,由浅入深地探讨了一系列实战问题,包括如...

weixin_39598308的博客 445

python flask快速入门与进阶-Flask基础进阶与python flask实战bbs教程

├─Flask基础进阶│ 01-HTTP 基础知识.mp4│ 02-python CGI 与 WebServer.mp4│ 03-virtuanenv配置及Flask快速示例.mp4│ 04-Flask基本结构及MVC请求响应过程.mp4│ 05-Flask Request 请求对象.mp4│ 06-Response 响应对象.mp4│ ...

weixin_39846664的博客 305

Flask 教程 第八章:粉丝

本文转载自:https://www.jianshu.com/p/e9b20e09aa66 这是Flask Mega-Tutorial系列的第八部分,我将告诉你如何实现类似于Twitter和其他社交网络的“粉丝”功能。 在本章中,我将更多地使用应用的数据库。 我希望应用的用户能够轻松便捷地关注其他用户。 所以我要扩展数据库,以便跟踪谁关注了谁,这比你想象的...

weixin_34150224的博客 155
上一篇: Flask08——数据库操作-增删改查作者书籍
下一篇: 每天3小时学前端之JS-第01天-初识JS
零寂前端
博客等级 码龄11年 59粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值