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文档了解更多用法和自定义选项

  • 相关阅读:
    inotifywait 目录或文件的监控
    outlook邮件中样式问题
    IE8兼容问题
    12px以下字体显示问题
    box-shadow
    cropper.js图片裁剪
    利用vcard和qrcode.js生成二维码导入联系人
    使用link rel="shortcut icon"为网页标题加图标
    将input或textarea设置为disabled的样式问题
    img没有src属性时自动出现边框
  • 原文地址:https://www.cnblogs.com/sgatbl/p/10263300.html
Copyright © 2011-2022 走看看