用flask开发个人博客(22)—— 使用Flask-Migrate实现数据库的更新

        使用Flsak-Migrate数据库迁移框架,可以保证数据库结构在发生变化时,改变数据库结构不至于丢失数据库的数据。使用其进行数据库进行数据库的迁移,主要分为三个步骤:

1 创建数据仓库

        首先我们要在test.py中布置相关环境:

from flask_migrate import Migrate,MigrateCommand
from fask_script import Manager
...
manager=Manager(app)
migrate=Migrate(app,db)
manager.add_command('db',MigrateCommand)

        这里我们引入了Manager模块用来使启动flask时支持命令行。首先,第1行分别引入了migrate模块和Manager相关模块;第4行创建了一个manager对象,以支持自定义命令的配置;第5行创建一个Migrate对象并关联对应的应用程序类对象app和数据库管理类对象db;最后一行将MigrateCommand命令加入到manager对象中,这样就可以在命令行中进行数据库迁移的相关命令.

        需要注意的是,引入Manager支持启动应用程序的命令行时,我们还需要修改app的run语句,改为:

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

        接下来我们使用命令行模式创建一个迁移的仓库:

>>> python test.py db init

        'db'是在manager.add_command('db',MigrateComand)这句中我们声明的命令行对象名称,init是Migrate命令,表示初始化迁移仓库,运行完成之后,会在当前目录下创建一个migrations的文件夹,用于进行迁移的数据库脚本都放在这里.

2 创建迁移脚本

        使用migarate子命令来创建数据库迁移脚本,在此之前我们先改动一下数据库的模型来验证迁移是否成功,我们在User模型中添加age属性:

class User(db.Model):
      __tablename__='users'
      id=db.Column(db.Integer,primary_key=True)
      name=db.Column(db.String(64),unique=True)
      role_id=db.Column(db.Integer,db.ForeignKey('roles.id'))
      age=db.Column(db.Integer)
...
        添加好之后,使用下面的命令自动添加迁移的脚本:

python test.py db migrate -m "inition migrate"

3 更新数据

        使用upgrade和downgrade命令分别向数据库更新数据和从数据库更新数据,使用upgrade命令将本次的改动更新到数据库中:

python test.py db upgrade

        我们检查下是否更新成功:



        成功进行了更新。


Github位置:
https://github.com/HymanLiuTS/flaskTs

克隆本项目:
git clone git@github.com:HymanLiuTS/flaskTs.git
获取本文源代码:
git checkout FL22



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值