Flask博客实战 - 配置Flask-Migrate

Flask-Migrate

Flask-Migrate 是一个扩展,他是Alembic的进一步封装,以更好的适配Flask和Flask-SQLAlchemy 应用程序。 就实际的数据库迁移而言,所有内容都由Alembic处理,因此您可以获得完全相同的功能。

Alembic 是一款轻量型的数据库迁移工具,它与 SQLAlchemy 一起共同为 Python 提供数据库管理与迁移支持。

安装Flask-Migrate

pip install Flask-Migrate

配置Flask-Migrate

1、首先在工厂函数所在文件中引入

  • 路径:RealProject/init.py
from flask_migrate import Migrate

migrate = Migrate()

2、在工厂函数中注册, 最终

def create_app(test_config=None):
    app = Flask(__name__, instance_relative_config=True)

    # 省略部分代码...

    db.init_app(app)

    # 注册migrate
    migrate.init_app(app, db)

    # 省略部分代码...

    return app

最后,完整的工厂函数如下

def create_app(test_config=None):
    app = Flask(__name__, instance_relative_config=True)

    if test_config is None:
        CONFIG_PATH = BASE_DIR / 'RealProject/settings.py'
        app.config.from_pyfile(CONFIG_PATH, silent=True)
    else:
        # test_config为一个字典
        app.config.from_mapping(test_config)

    db.init_app(app)
    migrate.init_app(app, db)

    # 递归创建目录,确保项目文件存在
    try:
        os.makedirs(app.instance_path)
    except OSError:
        pass

    # 注册视图
    from app.blog import views as blog
    app.register_blueprint(blog.bp)   

    # 注册模型
    from app.blog import models

    return app

使用Flask-Migrate

在上一节最后我们说过,需要导出项目的环境变量,才能使用flask的命令,因此在执行以下操作之前,记得先导出环境变量哦!

在此之前,我们已经创建好了一个博客的分类模型,并且将模型数据已经在工厂函数中注册!

下来,我们就可以使用以下命令创建迁移存储库:

flask db init

这会将迁移文件夹添加到应用程序中。此时,你可以发现项目目录多了一个migrations的文件夹,下边的versions目录下的文件就是生成的数据库迁移文件!

然后,运行以下命令生成迁移

flask db migrate

做完这两步就完成了第一次的初始迁移操作,我们可以看数据库已经有了我们创建的模型字段!

之后,每次在新增和修改完模型数据之后,只需要执行以下两个命令即可

falsk db migrate
flask db upgrade

到这里,基本上我们的项目最基本的配置就已经做完了,后边章节我们将开始真正的业务编写,Flask因其自身的灵活性,大部分的东西都得依靠第三方,所以前期的项目配置以及文件夹结构每个人的理念不同,自然设计出来的结构也是不同的,所以这就非常考验python的基础和能力,因此上,再开始项目之前,我们队python的相关基础知识一定要掌握的比较扎实,做起来才可能会更加轻松!

其他章节

  1. Flask博客开发实战 - 前言
  2. Flask博客开发实战 - 配置环境并安装Flask
  3. Flask博客实战 - 快速上手
  4. Flask博客实战 - 目录结构
  5. Flask博客实战 - 工厂函数
  6. Flask博客实战 - 蓝图应用
  7. Flask博客实战 - Flask-SQLAlchemy的使用