2018年2月21日水曜日

Python+Flask(Flaskr)で、データベース接続(その2)

Python+Flask(Flaskr)で、データベース接続(その2)です。
毎回、データベース接続を行うのは非効率的なので、アプリケーションコンテキストを利用すべしとのこと。 gオブジェクトにデータを安全に保持しておけるらしいです(?)。teardown_appcontextは、アプリケーションコンテキストが破棄される際に呼び出され、データベースをクローズ(Close)します。

# データベース接続
def get_db():
    if not hasattr(g, 'sqlite_db'):
        g.sqlite_db = connect_db()
    return g.sqlite_db

# データベースClose
@app.teardown_appcontext
def close_db(error):
    if hasattr(g, 'sqlite_db'):
        g.sqlite_db.close()

# トップページ
@app.route('/')
def index():
    db = get_db()
    cur = db.execute('select title, text from entries order by id desc')
    entries = cur.fetchall()
    return render_template('index.html', entries=entries)

実際に設定してみたのがこちら

参考サイト
Flaskのチュートリアルをやってみる① 〜環境設定からデータベースまで([[ともっくす alloc] init]さん)
Step 4: Database Connections(Flask Documentation)
The Application Context(Flask Documentation)

0 件のコメント:

コメントを投稿