Flask Framework Cookbook(Second Edition)
上QQ阅读APP看书,第一时间看更新

How to do it...

To enable migrations, we need to modify our app definition a bit. Let's understand how such a config appears if we modify the same for our catalog application:

The following lines of code show how my_app/__init__.py appears:

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 
from flask_migrate import Migrate, MigrateCommand 
    app = Flask(__name__) 
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' 
    db = SQLAlchemy(app) 
    migrate = Migrate(app, db) 
 
import my_app.catalog.views 
db.create_all() 

If we pass --help to the flask command while running it as a script, the Terminal will show all the available options, as shown in the following screenshot:

To initialize migrations, run the init command:

    $ flask db init
The preceding command will not work if you do not have the FLASK_APP environment variable configured. This can simply be done by running the following command on the Terminal:

$ export FLASK_APP=my_app

Once changes are made to the models, call the migrate command:

    $ flask db migrate 

To make the changes reflect on the database, call the upgrade command:

    $ flask db upgrade