zoukankan      html  css  js  c++  java
  • Flask之flask-migrate 数据库迁移

    简介

    flask-migrate是flask的一个扩展模块,主要是扩展数据库表结构的.

    官方文档:http://flask-migrate.readthedocs.io/en/latest/

     使用flask-migrate需要依赖flask-script组件,详见本人另外一篇博客 --> flask-script详解

    安装

    pip install flask-migrate

    使用举例

    创建命令

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    from flask_script import Manager
    from flask_migrate import Migrate, MigrateCommand
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
    
    db = SQLAlchemy(app)
    migrate = Migrate(app, db)
    
    manager = Manager(app)
    manager.add_command('db', MigrateCommand)
    
    class User(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(128))
    
    if __name__ == '__main__':
        manager.run()

     执行命令

    $ python manage.py db init   初始化数据库,会创建一个migations文件夹,并且会在数据库中生成一个alembic_version表
    $ python manage.py db migrate  创建迁移历史
    $ python manage.py db upgrade  更新数据库

     坑

    1.设计表时字段的默认值

    operator = db.Column(db.String(40), nullable=True, server_default="init_data")

    这里用参数server_default,而不是default

    2.如果报这个错误

    Heroku Postgres, db migrate fail: alembic.util.exc.CommandError: Can't locate revision identified by

    将alembic_version表中的数据删掉即可

     
     
     
  • 相关阅读:
    halcon 2极坐标转笛卡尔坐标
    xmal随笔
    halcon 3焊点查找
    halcon 药丸查找
    halcon 1区域保存生成
    mokee源码下载
    多个DataTable的合并成一个新表
    代码分析工具
    SQL大量数据查询分页存储过程
    sqlite3使用简介
  • 原文地址:https://www.cnblogs.com/jiangchunsheng/p/9218338.html
Copyright © 2011-2022 走看看