flask 数据库迁移_数据库迁移方案

flask 数据库迁移_数据库迁移方案    在开发的过程中,需要修改数据库的模型,而且需要在修改之后更新数据库,最直接就是删除旧表,但是会丢失数据。所有最好的方式就是数据库迁移。它可以追踪数据库模型的变化,然后把变动应用到数据库中。    在flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到flask-Script中,所有的操作通过命令就能完成。Flask-Migrate提供了一个MigrateComma…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

    在开发的过程中,需要修改数据库的模型,而且需要在修改之后更新数据库,最直接就是删除旧表,但是会丢失数据。所有最好的方式就是数据库迁移。它可以追踪数据库模型的变化,然后把变动应用到数据库中。

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

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

from flask_migrate import MigrateCommand, Migrate

from flask_script import Manager

app = Flask(__name__)

manage = Manager(app)

class Config(object):

    DEBUG = True

    SQLALCHEMY_DATABASE_URI = 'mysql://root:wjm@localhost/py9'

    SQLALCHEMY_TRACK_MODIFICATIONS = False

app.config.from_object(Config)

db = SQLAlchemy(app)

# 创建migrate实例,第一个参数是Flask的实例,第二个是sqlalchemy的数据库实例

migrate = Migrate(app, db)

# manage是Flask-Script的实例,这条语句在flask_script中添加了一个db命令

manage.add_command('db',MigrateCommand)

# 定义模型

class Role(db.Model):

    # 定义表名

    __tablename__ = 'roles2'

    # 定义字段

    id = db.Column(db.Integer,primary_key=True)

    name = db.Column(db.String(32),unique=True)

    # repr显示一个可读字符串

    def __repr__(self):

        return 'name:'.format(self.name)

class User(db.Model):

    # 定义表名

    __tablename__ = 'users2'

    # 定义字段

    id = db.Column(db.Integer,primary_key=True)

    name = db.Column(db.String(32), unique=True, index=True)

    # 设置外键

    role_id = db.Column(db.Integer, db.ForeignKey('roles2_id'))

    def __repr__(self):

        return 'User:'.format(self.name)

if __name__ == '__main__':

    manage.run()

在终端执行下面的命令。会创建migrations文件夹,所有的迁移文件都放在里面。
 

python manage.py db init

flask 数据库迁移_数据库迁移方案

flask 数据库迁移_数据库迁移方案



创建自动迁移脚本:
upgrade():函数把迁移中的改动应用到数据库中。
downgrate():函数则将改动删除。
自动创建的迁移脚本会
根据模型定义和数据库当前状态的差异,生成upgrade()和downgrade()函数的内容。
对比不一定完全正确,有可能会遗漏一些细节,需要进行检查。
 

python manage.py db migrade -m 'initial migration'

注意:这里有可能出现着个错误

flask 数据库迁移_数据库迁移方案

只需要把-m给删掉就可以了,参数太多没办法

flask 数据库迁移_数据库迁移方案


发现有不同,此时更新数据库

 

python manage.py db upgrade

flask 数据库迁移_数据库迁移方案

更新完之后,在数据库会出现一个表

flask 数据库迁移_数据库迁移方案

flask 数据库迁移_数据库迁移方案


versions每迁移一次里面都会生成一个文件。

回退版本:先通过history命令来找到版本号,然后传给downgrade命令
 

python manage.py db history

python manage.py db downgrade 版本号




实际操作顺序:
1.先创建python文件  manage.py,内容为
2.python manage.py db init
3.python manage.py db migrate -m ‘版本号(注释)‘
4.python manage.py db upgrade

5.根据需求修改模型
6.python 文件 db migrate -m”新版本名(注释)”
7.python 文件 db upgrade 然后观察表结构
8.若返回版本,则利用 python 文件 db history查看版本号
9.python 文件 db downgrade(upgrade) 版本号


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184701.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • mysql数据库基础知识总结

    mysql数据库基础知识总结mysql数据库基础知识总结一、基础常用命令1.创建命令createuser‘用户名’@‘ip’identifiedby‘密码’;创建用户dropuser用户名@ip删除用户showdatabases;查数据库showtables;看表createdatabase数据库名defaultcharsetutf8;创建数据库createtable表名(列名数据类型约束···,列名数据类型约束···)engine=in

  • Linux route add_linux系统route命令

    Linux route add_linux系统route命令routeadd命令的主要作用是加入静态路由,通常的格式是:routeADD157.0.0.0MASK255.0.0.0157.55.80.1METRIC3IF2參数含义:destinationmaskgatewaymetricinterface/*能够缩写*/destination【网段地址】mask【子网掩码】gateway【网关地址】…

  • CSGO国内开箱网站大全incsgo skinsdog狗网 coolkaixiang 88steam「建议收藏」

    CSGO国内开箱网站大全incsgo skinsdog狗网 coolkaixiang 88steam「建议收藏」CSGO国内开箱网站大全收录incsgo官网,skinsdog狗网官网,coolkaixiang官网,88steam官网,Box818官网,Piggycase官网,Yskins官网incsgo国内CSGO饰品皮肤开箱网站官方链接:www.incsgo.gg注册登录自动免费获得$1.00美金取回状态:直接取回**优惠码:**csgogo(充值使用csgogo可增加5%充值金额)skinsdog狗网CSGO饰品皮肤开箱网站可直接取回官方链接:skinsdog.c.

  • 如何搭建www服务器_网站服务器

    如何搭建www服务器_网站服务器更多内容参见个人技术博客,无广告欢迎关注搭建自己的服务器,过程大致分为3步:*购买服务器,配置系统环境*获得域名* CA认证1、购买服务器,配置系统环境经过比较,阿里云、腾讯

  • 香农编码的matlab实现实验总结_香农编码C语言

    香农编码的matlab实现实验总结_香农编码C语言设计shannon编码方法,实现香农编码并算出编码效率实验三香农编码一、[实验目的]1、理解香农第一定理指出平均码长与信源之间的关系;2、加深理解香农编码具有的重要的理论意义。二、[实验环境]windowsXP,MATLAB7三、[实验原理]香农第一定理:设离散无记忆信源为Ss1P=p(s1)熵为H(S),其N次扩展信源为s2…..sqp(s2)….p(sq)SNα1=…

  • Java 并发:volatile 关键字解析「建议收藏」

    Java 并发:volatile 关键字解析「建议收藏」在Java并发编程中,要想使并发程序能够正确地执行必须要保证三条原则:原子性、可见性和有序性。只要有一条原则没有被保证,就有可能导致线程安全性问题。volatile关键字被用来保证可见性,即保证共享变量的内存可见性以解决缓存一致性问题,同时其还会禁止进行指令重排序。volatile关键字主要用于使其他线程及时感知共享变量的修改并保证使用变量最新值,例如,用于修饰状态标记量和Double-Check(双重检查)中。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号