flask-migrate

Posted clairexxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask-migrate相关的知识,希望对你有一定的参考价值。

不启动视图手动添加app到app栈

with app.app_context():
    db.create_all()

不删除表直接更改表结构(如增加一列)

模型-》迁移文件-》表

* 采用db.create_all 在后期修改字段时,不会自动映射到数据库中,必须删除表,之后重新运行‘db.reate_all‘才会重新映射,为此可使用flask-Migrate来解决这一问题。它可以在每次修改模型后,可将修改后的模型映射到数据库中。

* 使用flask-migrate必须借助flask-scripts.

* flask-migrate中包含了所有对数据库相关的命令。

  • 安装:

pip install flask-migrate

  • 使用:
技术分享图片
 1 from flask import Flask, url_for, redirect, render_template
 2 import config
 3 from db import db
 4 from models import Article
 5 
 6 app = Flask(__name__)
 7 app.config.from_object(config)
 8 # db = SQLAlchemy(app)
 9 db.init_app(app)
10 
11 @app.route(/)
12 def index():
13     # return render_template(‘index.html‘)
14     return index
15 
16 if __name__ == __main__:
17     app.run()
vlauegood.py
技术分享图片
1 from flask_sqlalchemy import SQLAlchemy
2 db = SQLAlchemy()
db.py
技术分享图片
 1 from flask_script import Manager
 2 from valuegood import app
 3 from db import db
 4 from flask_migrate import Migrate, MigrateCommand
 5 from models import Article
 6 
 7 manager = Manager(app)
 8 
 9 # 1.要使用flask-migrate必须绑定app及db
10 migrate = Migrate(app, db)
11 # 2.把MigrateCommand添加到manager
12 manager.add_command(db, MigrateCommand)
13 
14 
15 if __name__ == __main__:
16     manager.run()
manager.py
技术分享图片
1 from db import db
2 
3 class Article(db.Model):
4     __tablename__ = article
5     id = db.Column(db.Integer, primary_key=True, autoincrement=True)
6     title = db.Column(db.String(100), nullable=False)
7     content = db.Column(db.Text, nullable=False)
8     author_id = db.Column(db.Integer, nullable=False)
models.py
  • 运行:

1.python manager.py db init  

2.python manager.py db migrate

3.python manager.py db upgrade

* 当模型改变时,在cmd中重新运行2,3 即可。

* 在manager.py文件中必须把model中的模型导入:

from models import Article

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

Flask-Migrate

Flask-Migrate

Flask之flask-migrate 数据库迁移

Flask-Migrate

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

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