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