zoukankan      html  css  js  c++  java
  • flask-migrate库的使用

    在使用flask-SQLAlchemy库的时候,经常苦恼于该库的creat_all()方法不能对项目中的新建库进行修改,drop_all()又会对数据进行删除,这非常的不方便,万幸,Flask-SQLAlchemy的开发者同时开发了flask-migrate库,用于数据库的迁移。本文为windows环境。

    安装

    pip install flask-migrate

    通过pip安装,就能完成。

    使用方法

    在进行迁移操作以前,我们需要现在程序中进行初始化操作:

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    from flask_script import Manager
    from flask_migrate import Migrate
    
    app = Flask(__name__)
    ...
    
    db = SQLAlchemy(app)
    migrate = Migrate(app, db)

    实例化Migrate类,除了要传入程序实例app,还需要传入实例化Flask-SQLAlchemy提供的SQLAlchemy类创建的db对象作为第二个参数。然后就可以开始数据库迁移操作了。

    step1:创建迁移环境

    flask db init

    如果显示无该指令,可以使用:

    python -m flask db init

    通过这种方式,就可以在本地项目的根目录下创建一个migrations文件夹,该文件夹中包含了自动生成的配置文件和迁移脚本文件夹。ps:python -m是python中用来执行外部命令的方式,本文下面部分的内容如果出现相同情况,都可以通过添加该语句来解决。migrations文件夹如下所示:

    step2:生成迁移脚本

    使用migrate子命令可以自动生成迁移脚本

    如果你在项目中添加了多个表,那么使用如下命令生成迁移脚本:

    flask db migrate

    执行这条命令以后,Alembic会检测出数据库及模型的变化,如下所示:

    如果你只是单一的数据表发生字段的添加,那么你只需要这样:

    flask db migrate -m "add 表名 字段名"

    这种方式,可以实现对单一数据库表字段的添加操作,结果与上述方法类似,就不添加图片了。

    step3:★更新数据库

    这一步很关键,如果说,step2虽然检测到了数据库的变化,但是,并没有对原数据库进行任何改变,这还需要对数据库的更新操作,有点儿类似于项目中对数据库的增删改,可以保证数据库的一致性。

    flask db upgrade

    通过该指令,就可以实现数据库中未创建库和表的创建;如果已经创建了,则会在不损坏数据的前提下执行更新。结果如下所示:

    以上就完成了对数据库迁移操作的简单介绍,非常的方便。

    附上Alembic文档了解更多用法和自定义选项

  • 相关阅读:
    Core Data Migration 之拆分Entity
    Core Data Migration 之拆分Entity
    对 Android 开发者有益的 40 条优化建议
    对 Android 开发者有益的 40 条优化建议
    超实用的Java数组技巧攻略分享!
    ls command not found
    苹果建议开发者在iOS 7正式发布之前把应用提交至App Store
    关于android SDK安装Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml出错
    Linux_系统时间管理
    Python_元组、字典内建方法详解
  • 原文地址:https://www.cnblogs.com/sgatbl/p/10263300.html
Copyright © 2011-2022 走看看