Python Flask,数据库,SQLAlchemy,数据库迁移 (根据模型类自动生成数据库表),Flask-Migrate

在开发过程中,需要修改数据库模型类,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。

更好的解决办法是使用数据库迁移框架,它可以追踪数据库模型的变化,然后把变动应用到数据库中。

在Flask中可以使用Flask-Migrate扩展,来实现数据库迁移。并且集成到Flask-Script中,所有操作通过命令来完成。

安装flask_script包: pip install Flask-Script

安装Flask-Migrate包: pip install flask-migrate

demo.py(数据库迁移,让模型类与数据库产生关联):

#coding=utf-8
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate, MigrateCommand  # 导入
from flask_script import Manager  # 导入

app = Flask(__name__)
manager = Manager(app)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:密码@127.0.0.1:3306/数据库名'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)

# 第一个参数是Flask的实例,第二个参数是Sqlalchemy数据库实例
Migrate(app, db)  # 实例化对象时,会自动将Migrate对象注入到app中,让app和db对象产生关联。

# manager是Flask-Script的实例,这条语句在flask-Script中添加一个db命令
manager.add_command('db', MigrateCommand)  # 'db'命令名可以任意


# 定义模型类
class Role(db.Model):
    pass


if __name__ == '__main__':
    manager.run()  # 通过管理类对象来运行flask。 需要在命令行中启动web服务。

在命令行中操作:

python demo.py db init   # 初始化,会创建migrations文件夹,所有迁移文件都放在里面。

python demo.py db migrate -m '迁移版本的备注信息'   # 在migrations文件夹中生成迁移文件(迁移版本)

python demo.py db upgrade   # 根据迁移文件更新数据库

python demo.py db history    # 查看数据库迁移(更新)历史以及迁移版本号

python demo.py db downgrade 版本号    # 回退数据库到指定版本号

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/85563827