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的相关基础知识一定要掌握的比较扎实,做起来才可能会更加轻松!