当前位置: 首页 > news >正文

一周学会Flask3 Python Web开发-SQLAlchemy数据迁移migrate

锋哥原创的Flask3  Python Web开发 Flask3视频教程:

2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

模型类(表)不是一成不变的,当你添加了新的模型类,或是在模型类中添加了新的字段,甚至是修改了字段的名称或类型,都需要更新表。如果我们不在乎数据的话,可以删除表,然后重新生成新表。

在开发时,以删除表再重建的方式更新数据库简单直接,但明显的缺陷是会丢掉数据库中的所有数据。在生产环境下,你绝对不会想让数据库里的数据都被删除掉,这时你需要使用数据库迁移工具来完成这个工作。SQLAlchemy的开发者Michael Bayer写了一个数据库迁移工具——Alembic来帮助我们实现数据库的迁移,数据库迁移工具可以在不破坏数据的情况下更新数据库表的结构。蒸馏器(Alembic)是炼金术士最重要的工具,要学习SQL炼金术( SQLAlchemy),我们当然要掌握蒸馏器的使用。

我们安装下flask-Migrate库

pip install flask-Migrate -i https://pypi.tuna.tsinghua.edu.cn/simple

然后创建migrate对象

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

做数据迁移的时候,第一步就是要创建迁移环境

终端执行命令:

flask db init

项目目录下会自动创建migrations目录及子文件。

接着StudentModle添加一个remark字段

我们执行生成下迁移脚本,-m是添加备注信息

flask db migrate -m "t_student add remark  field"

versions目录下生成了迁移文件:

"""t_student add remark  field

Revision ID: fa43fee367b2
Revises: 
Create Date: 2025-03-23 12:39:18.130872

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'fa43fee367b2'
down_revision = None
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    with op.batch_alter_table('t_student', schema=None) as batch_op:
        batch_op.add_column(sa.Column('remark', sa.Text(), nullable=True))

    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    with op.batch_alter_table('t_student', schema=None) as batch_op:
        batch_op.drop_column('remark')

    # ### end Alembic commands ###
 

最后我们执行迁移文件,更新数据库,通过upgrade命令:

flask db upgrade

执行完后,t_student表就多了remark字段:

相关文章:

  • 数据结构与算法:数组相关力扣题:27.移除元素、977.有序数组的平方、209.长度最小的子数组、59. 螺旋矩阵 II
  • msyql--基本操作之运维篇
  • Tasklet_等待队列_工作队列
  • 【LeetCode 题解】算法:15.三数之和
  • IP 地址查询网站
  • 基于 CLIP 的文本与视频编码及相关知识解析
  • ngx_http_core_location
  • Cookie、Session 与 Token:核心区别与应用场景解析
  • centos 7 部署FTP 服务用shell 搭建脚本,使用时稍微修改自己所需需求
  • 深克隆和浅克隆(建造者模式,内含简版)
  • 解码未来:DeepSeek开源FlashMLA,推理加速核心技术,引领AI变革
  • 低功耗可编程RTU在热网监控中的应用
  • 抽象工厂设计模式及应用案例
  • 如何在阿里云linux主机上部署Node.Js
  • ADB介绍
  • 《C语言数据类型取值范围:一场数字的“极限挑战”之旅》
  • CSS 中opacity属性和rgba颜色表示法中透明度的区别及应用场景
  • Kubernetes高级应用之-重启策略
  • 【数据库发展史】
  • 文章记单词 | 第2篇(六级)
  • 企业免费网站系统/关键词排名推广软件
  • 飞浪网站建设/上百度推广的网站要多少钱
  • 独立设计购物网站/电脑培训学校课程
  • 沈阳微信网站开发/网站排名
  • 拼多多免费推广软件/seo免费优化软件
  • 手机助手app下载/一键优化清理