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表中的数据删掉即可

     
     
     
  • 相关阅读:
    第二周
    第一周
    构建之法阅读笔记之三
    冲刺一(10)
    冲刺一(9)
    用户模板和用户场景
    冲刺一(8)
    第10周总结
    冲刺一(7)
    冲刺一(6)
  • 原文地址:https://www.cnblogs.com/jiangchunsheng/p/9218338.html
Copyright © 2011-2022 走看看