zoukankan      html  css  js  c++  java
  • Flask学习笔记(3)-数据库迁移

    数据库迁移

    通过创建虚拟flask环境来迁移数据库。

    一、创建虚拟环境

    virtualenvwrapper库中有个mkvirtualenv函数,用来创建虚拟环境(make virtual envirement)。使用命令

    mkvirtualenv flask-tutorial --python=python3.6
    

    创建一个名为flask-tutorial的虚拟环境,如图
    pic
    可利用workon flask-tutorial命令激活这个虚拟环境。使用deactivate退出这个虚拟环境。在默认条件下,虚拟环境不包含任何库。因此需要重新安装。

    pip install flask flask-login flask-sqlalchemy mysql-connector-python
    

    接着通过pip freeze查看库,将会看到:

    -f /usr/share/pip-wheels
    click==6.7
    Flask==0.12.2
    Flask-Login==0.4.0
    Flask-SQLAlchemy==2.3.2
    itsdangerous==0.24
    Jinja2==2.9.6
    MarkupSafe==1.0
    mysql-connector-python==2.0.4
    SQLAlchemy==1.1.14
    Werkzeug==0.12.2
    

    使用pip freeze > requirements.txt来生成requirements.txt这个文件。注意删除第一行的-f /usr/share/pip-wheels再git。

    二、安装Flask数据库迁移扩展Flask-Migrate

    使用pip install Flask-Migrate安装这个扩展。

    from flask_migrate import Migrate 
    migrate = Migrate(app, db)
    

    在flask_app.py添加以上代码启用Migrate。

    三、创建一个迁移将要进行的目录,

    命令:

    export FLASK_APP=flask_app.py
    flask db init
    

    然后创建一个新的数据库,替换掉flask_app.py里面的旧数据库。保存但不要运行。命令行输入flask db migrate之后,再将刚刚的改动改回去。flask db migrate会生成了一个.py的文件,这个文件是用来修改comments数据库的。如图
    pic2
    接着执行命令行flask db stamp head为comments数据库添加“版本号”。
    去数据库console执行:

    show tables;
    select * from alembic_version;
    

    结果如图:
    pic3
    发现此时发生变化的还有原本的comments数据库:增加了alembic_version,这是Flask-Migrate用来完成工作的底层库。其中version_num列只有一行十六进制数字,这和执行
    flask db stamp head得到的数字是一样的,可以理解为Flask_Migrate为comments数据库添加的“版本号”。

    四、为comments数据库添加一个新的列。

    前面的工作做好了,下面就可以在flask_app.py 的comments class里添加posted = db.Column(db.DateTime, default=datetime.now)。接着依次输入以下命令行:
    1.flask db migrate生成了更新数据库所需的Python文件。如图:
    pic4
    注意到新文件里增加了upgrade()函数用来增加posted列。
    2.flask db upgrade执行上述文件,对数据库进行添加列。

    这时候查看MySQL,发现posted已经被添加了。
    pic5

  • 相关阅读:
    基于TensorRT的BERT实时自然语言理解(下)
    基于TensorRT的BERT实时自然语言理解(上)
    lsof
    kata-runtime spec
    kata 虚拟机
    json + jq命令
    kata-runtime run mycontainer
    kata-runtime来运行容器
    docker + docker-runc
    kata container在aarch64上成功运行
  • 原文地址:https://www.cnblogs.com/aubucuo/p/flask3.html
Copyright © 2011-2022 走看看