Flask中模型类的数据库迁移操作Flask-Migrate和Flask-Script | 附知识图

  • 知识图总览:注意进入项目虚拟环境后在执行迁移

    迁移命令


1- 准备工作 使用orm创建原始表并添加数据
  • 终端连接数据库并做如下操作

    创建数据库

  • Pycharm运行如下代码

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    
    
    class Config(object):
        SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/author"
        SQLALCHEMY_TRACK_MODIFICATIONS = True
    
    app.config.from_object(Config)
    
    db = SQLAlchemy(app)
    
    
    class Author(db.Model):
        """作者"""
        __tablename__ = "tbl_authors"
    
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(32), unique=True)
    
    if __name__ == '__main__':
        db.drop_all()
        db.create_all()
    
        au_xi = Author(name='我吃西红柿')
        au_qian = Author(name='萧潜')
        au_san = Author(name='唐家三少')
        db.session.add_all([au_xi, au_qian, au_san])
        db.session.commit()
    
        app.run(debug=True)
    
  • 终端再次查看,发现已经有了表与数据

    在这里插入图片描述


2- 执行数据库迁移 给原始表添加email字段 并关联模型类的orm映射
  • 原始代码更改为如下内容,文件命名为 tt.py

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    from flask_script import Manager
    from flask_migrate import MigrateCommand, Migrate
    
    
    app = Flask(__name__)
    
    
    class Config(object):
        SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/author"
        SQLALCHEMY_TRACK_MODIFICATIONS = True
    
    app.config.from_object(Config)
    
    db = SQLAlchemy(app)
    manager = Manager(app)  # 创建启动命令管理对象
    
    Migrate(app, db)  # 创建数据库迁移工具对象
    manager.add_command("db", MigrateCommand)  # 向启动命令管理对象中添加迁移命令
    
    
    class Author(db.Model):
        """作者"""
        __tablename__ = "tbl_authors"
    
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(32), unique=True)
        email = db.Column(db.String(128), unique=True)  # 新增email字段
    
    if __name__ == '__main__':
        manager.run()  # 使用命令行方式启动
    
  • 终端中依次执行如下命令
    创建迁移仓库:python tt.py db init

    创建迁移仓库
    生成migration文件夹

    创建迁移脚本:python tt.py db migrate -m "initial migration"

    创建迁移脚本
    生成临时表

    更新数据库:python tt.py db upgrade

    更新数据库
    表结构变化


3- 其余操作
  • 查看历史更新版本号:python tt.py db history

    更新版本号

  • 回退数据库:python tt.py db downgrade c30da037d7ca

    回退数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值