FlaskチュートリアルでFlask-Migrateを実施 + flaskrをuwsgiで配信する方法
FlaskチュートリアルでFlask-Migrateを実施 + flaskrをuwsgiで配信する方法
こんにちは、葛の葉です。「くずのは」って読むんですよ。よろしくお願いします。
さて、今回は、Flaskチュートリアルのflaskr
を見ながらアプリケーションを作っていたのですが、そのうち、Flask-Migrate
っていうのを使って、マイグレーション
を行おうと思いました。
2. Flaskチュートリアル — study flask 1 ドキュメント
ここの項目を見ればわかるのですが、
$ python >>> from flaskr.models import init >>> init()
このようなコマンドを打たないと、DBとPythonが連携されないようです。都度、python
を起動して行うのは面倒なので、Flask-Migrate
を使うことにします。
Flask-Migrateを使う
モジュールのインストールの実施
pip install Flask-Migrate
flaskr/__init__.py
を以下のように編集
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate app = Flask(__name__) app.config.from_object('flaskr.config') db = SQLAlchemy(app) migrate = Migrate(app, db) import flaskr.views
ちなみに2行目なんだけど、
from flask.ext.sqlalchemy import SQLAlchemy
ではなくて
from flask_sqlalchemy import SQLAlchemy
になります。
flask.ext.sqlalchemy
というのが廃止されたみたいです。
チュートリアルでは古い情報が残ったままみたいです。
そうして、manage.py
がおいてあるディレクトリをカレントディレクトリにした状態(つまりtutorial
ディレクトリ)で以下のコマンドを実施。
FLASK_APP=manage.py flask db init FLASK_APP=manage.py flask db migrate FLASK_APP=manage.py flask db upgrade
そうすると、migrations
ディレクトリが作成され、マイグレーション
が完了します。
このmigrations
ディレクトリってやつが残っているとFLASK_APP=manage.py flask db init
が失敗するようなので、やり直したいときは都度削除してください。
ただ、権限がないと削除できないのでsudo rm -rf migrations/
みたいな感じで削除してあげてください。
uwsgiで配信する方法
Flask-Migrateとは関係ないですが、こちらも少し手こずったので共有します。
uwsgiについては、以下のリンクをどうぞ。
The uWSGI project — uWSGI 2.0 documentation
pip
でのインストールは以下のコマンドになります。
pip install uwsgi
uwsgi.ini
といった名前で、以下のテキストファイルを作ります。
[uwsgi] http = :3031 chdir = /***/tutorial #manage.pyのおいてあるディレクトリ wsgi-file = manage.py #manage.pyのやつ module = flaskr #flaskrディレクトリ callable = app #flaskのappを呼び込むため必要 chmod-socket = 666 master = true
以上のようにwsgi-file
をmanage.py
に設定。
chdirをmanage.py
がおいてあるディレクトリに設定。
そして、module
をflaskr
に設定することが必要のようです。
次に以下のようなコマンドを打ちます。
uwsgi --init /***/uwsgi.ini
これでuwsgi
が起動し、127.0.0.1:3031
でwebページが見れるようになるはずです。
ついでに、Nginxと連携したいのなら、以下の記事なんかも見てもらえたらなーって思います。