Flask之flask-migrate 数据库迁移

Posted jiangchunsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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表中的数据删掉即可

以上是关于Flask之flask-migrate 数据库迁移的主要内容,如果未能解决你的问题,请参考以下文章

Flask从入门到精通之使用Flask-Migrate实现数据库迁移

Flask-Migrate

使用Flask-Migrate进行管理数据库升级

使用Flask-Migrate进行管理数据库升级

flask-migrate

Flask之数据库迁徙