flask和django区别-数据库的迁移

背景

在很多时候,在我们设计好模型之后,又需要进行一定的改变和更新数据操作;,最直接的方式就是删除原来的旧表,但是随之而来的问题就是我们之前的数据也会删除;那怎么办呢,

这时候就需要数据库迁移框架了:

对于django而言,框架内部就集成了数据库迁移模块了:

分为3步走:

1:修改modesl数据模型

2:生成迁移文件migrations

python manage.py makemigrations

可以看出生成了一个名为migrations的文件;

3:向数据库执行迁移操作:

python manage.py migrate

这时候就完成了django的数据库迁移操作;

 

对于flask相对要复杂一点,应为flask只有两个核心组间:一个是用 Werkzeug(路由模块) ,另一个是Jinja2 ,如果你想

使用别的功能是需要进行安装的

我们需要安装的有

1:flask_migrate

2:flask_script

flask是通过flask_migrate实现数据库的迁移的,并集成到flask_script中,让操作,通过命令实现;

具体如下

#导入模块

from flask import Flask

from flask_sqlalchemy import SQLAlchemy

from flask_migrate import Migrate,MigreateCommand

from flask_script import Manger

#生成app实例

app = Flask(__name__)

# 生成数据库实例

db = SQLAlchemy(app)

# 生成flask_script实例通过Mange

manage = Manage(app)

# 生成迁移实例,需要用到app的实例和数据库实例

migrater = Migrate(app,db)

# 向flask_script中添加db命令

manger.add_command('db',MigrateCommand)

# 更改数据模型(models类)

#定义模型Role
class Role(db.Model):
    # 定义表名
    __tablename__ = 'roles'
    # 定义列对象
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    def __repr__(self):
        return 'Role:'.format(self.name)

#定义用户
class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    def __repr__(self):
        return 'User:'.format(self.username)

if __name__ == '__main__':

manger.run()

 

这时候需要用到命令了:

具体步骤如下:

1:生成迁移文件:

python database.py db init

2:生成迁移脚本

python database.py db migrate -m 'initial migration'

3:更新数据库:

python database.py db upgrade

如果你想回退你的迁移,需要用到命令:但是需要指定版本号;

通过python database.py db history 查看迁移的版本

python database.py db downgrade 版本号

 

总结:

对比两个框架可以明显看出django要更加的方便一点;内部已经提供了迁移的功能,只需要将app注册到installapp里面,执行几个命令就行了

但是对于flask而言,flask需要引入两个组件:flask_migrate flask_script

一个迁移库,一个命令库;

但是flask多了一个回退版本的功能;

两者在迁移的过程中的思路基本一致:

1:修改数据模型

2:生成迁移文件

3:执行迁移

但是flask多了一个更新操作;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值