简单分析flask数据库迁移详情

author author     2023-03-21     542

关键词:

参考技术A

1、使用 Flask-Migrate 实现数据库迁移

db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all()才能重新创建表,但是这样的话,原来表中的数据就都被删除了,这肯定是不行的,这时就出现了数据库迁移的概念。

在开发过程中,随着需求的变化,有可能需要添加或修改表的一些字段,但是原表中的数据不能删除,此时就需要创建新表,并将旧表中的数据迁移至新表中,Flask-Migrate这个扩展就可以在不破坏数据的情况下更新数据库表的结构,并完成数据从旧表到新表的迁移。

2、Flask-Migrate的使用

可以使用pip install flask-migrate进行安装。在程序中,我们实例化 Flask_Migrate 提供的 Migrate 类,进行初始化操作。

实例化 Migrate 类,需要传入 Flask 实例 app 和 SQLAlchemy创建的实例 db。

2.1 数据库的迁移过程

先定义 User 模型类。

创建迁移环境

在开始迁移数据之前,需要先使用下面的命令创建一个迁移环境:

迁移环境只需创建一次,创建后会在项目根目录下生成一个 migrations 目录,其中包含了自动生成的配置文件和迁移版本目录。

生成迁移脚本

使用如下命令自动生成迁移脚本:

-m 选项添加备注信息,执行后迁移版本目录生成了迁移脚本。

迁移脚本内有两个函数:

upgrade():把迁移中的改动应用到数据库中

downgrade():将改动撤销

自动生成的迁移脚本会根据模型定义和数据库当前状态的差异,生成upgrade()和downgrade()函数的内容,不一定完全正确,有必要再进行检查一下。

更新数据库

生成了迁移脚本后,使用flask db upgrade命令可完成对数据库的更新。执行后即可生成数据库及表。

如果之后我们需要改动 user 表中的字段,比如添加一个mobile字段,我们只需在 User 模型类中添加该属性,之后执行flask db migrate -m \'注释\'和flask db upgrade命令即可。

如果想要回滚迁移的话,可以执行flask db downgrade命令。

3、总结

这里只是介绍如何在 Flask 中进行数据库迁移,关于在生产环境下,是否需要使用迁移工具或者使用何种工具进行迁移,这里不做讨论,至于我的话,在生产环境中,我没有使用过Flask-Migrate,而是选择编写 SQL 脚本来处理数据库及表的更新或改动,我觉得这样更不容易出错,其实各有各的好处,看自己选择。

flask-migrate数据库迁移(代码片段)

数据库迁移在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。 创... 查看详情

flask学习笔记-数据库迁移

数据库迁移通过创建虚拟flask环境来迁移数据库。一、创建虚拟环境virtualenvwrapper库中有个mkvirtualenv函数,用来创建虚拟环境(makevirtualenvirement)。使用命令mkvirtualenvflask-tutorial--python=python3.6创建一个名为flask-tutorial的虚拟环境,... 查看详情

flask项目中数据库迁移的使用(代码片段)

数据库迁移在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数... 查看详情

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

前言Flask-SQLAlchemyORM可以直接操作数据库,可以用db.create_all()代码同步表到数据库。当我们需要修改表的字段,比如对表新增字段,修改字段的时候需用到flask-migrate插件来同步迁移数据。flask-migrate迁移数据django框架里... 查看详情

flask数据库的迁移(代码片段)

如果是单纯的用flask去启动app.run()是没有办法想django那样对数据库进行迁移的首先要安装pipinstallflask-migrate然后修改代码,改变flask的启动方式fromflask_migrateimportMigrate,MigrateCommandfromflask_scriptimportShell,Manager...manager=Manager(app)#第一 查看详情

flask中使用flask-migrate扩展迁移数据库

安装Flask-Migrate插件(venv)$pipinstallflask-migrate注意到虚拟环境中(因为Flask环境就安装在虚拟环境中) 安装flask-script使python支持命令行操作pipinstallflask-script 创建manage.py文件#!/usr/bin/envpythonfromflask_scriptimportManagerf 查看详情

数据迁移

1.pipinstallflask-migrate #Flask-Migrate是一个数据迁移框架,需要通过Flask-script库来操作.2.pipinstallflask-script #通过命令行来操作Flask 3.新建模型更改文件:manage.py fromflask_scriptimportManagerfromflask_migrateim 查看详情

数据迁移(选做)

1.pipinstallflask-migrate #Flask-Migrate是一个数据迁移框架,需要通过Flask-script库来操作.2.pipinstallflask-script #通过命令行来操作Flask 3.新建模型更改文件:manage.py fromflask_scriptimportManagerfromflask_migrateim 查看详情

flask从入门到精通之使用flask-migrate实现数据库迁移

  在开发程序的过程中,你会发现有时需要修改数据库模型,而且修改之后还需要更新数据库。仅当数据库表不存在时,Flask-SQLAlchemy才会根据模型进行创建。因此,更新表的唯一方式就是先删除旧表,不过这样做会丢失数据... 查看详情

使用 Elastic Beanstalk 设置 Flask 数据库迁移

】使用ElasticBeanstalk设置Flask数据库迁移【英文标题】:settingupFlaskdbmigrationswithElasticBeanstalk【发布时间】:2015-04-2405:06:16【问题描述】:我已经建立了一个基于Flasksingeb(ElasticBeanstalkv3.1的终端客户端)的站点。在部署我的站点的... 查看详情

flask之数据库迁徙(代码片段)

4.3数据库迁移在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到... 查看详情

flask框架从入门到精通之模型迁移操作(十六)(代码片段)

...1、模型迁移一、概况在Django框架开发过程中,我们对数据库字段添加或删除,直接修改模型类,然后进行迁移可以了,非常方便。我们也想让Flask框架支持这样的操作,就需要使用Flask-Migrate扩展,来实现... 查看详情

数据库迁移

1.首先需要在虚拟环境中安装flask-migratepipinstallflask-migrate2.创建迁移仓库(这个命令会创建migrate文件夹,所有迁移文件都放在里面)pythondatabase.pydbinit      #database.py文件为配置flask-migrate的文件3.创建迁移脚... 查看详情

flask入门之触发器,事件,数据迁移

SQLAlchemyCore和SQLAlchemyORM都具有各种各样的事件挂钩:核心事件 -这些在 CoreEvents中描述,并包括特定于连接池生命周期,SQL语句执行,事务生命周期以及模式创建和拆卸的事件挂钩。ORM事件 -这些在 ORM事件中描述,... 查看详情

flask_migrate(代码片段)

...ager#脚本启动程序fromflask_migrateimportMigrate,MigrateCommand#迁移数据库fromappimportcreate_app,dbmy_app=create_app()manager=Manager(my_app)Migrate(my_app,db)manager.add_command("db",MigrateCommand)if__name__==‘__main__‘:manager.run()#初始化迁移数据库命令pythonmanage.pydbin... 查看详情

如何在我自己的数据库上使用 flask Migrate 和 SQLAlchemy,并连接到我不想迁移的第三方数据库?

】如何在我自己的数据库上使用flaskMigrate和SQLAlchemy,并连接到我不想迁移的第三方数据库?【英文标题】:HowdoIuseflaskMigrateandSQLAlchemyonmyowndatabase,andconnecttoathirdpartydatabasethatIdonotwishtomigrate?【发布时间】:2015-10-0616:57:04【问题描... 查看详情

c/c++迷宫问题详情分析--栈的应用(代码片段)

...释1、maze.h2、maze.c3、maze.c六,效果展示引言这是一个简单的顺序栈的应用求解迷宫问题,主要分享的是在求解这个问题的之前的准备,分析所需的数据,获得正确的数据结构,分析所需要的功能 查看详情

flask_script扩展包的作用

Manager数据库迁移的管理器,要进行数据库迁移,必须使用:1:实例化管理器对象manager=Manager(app)2:使用迁移框架:Migrate(app,db)3:manager.add_command(‘db‘,MifrateCommand) 并且可以使当前程序在终端中运行,需要配置环境:Edit中添加Scriptparameter... 查看详情