2017-01-03 12 views
0

私は、Postgresデータベースを照会し、データを挿入/削除する単純なFlask Webアプリケーションを構築しようとしています。私は更新/挿入についてもわからないですが、少なくとも私はdbをクエリします。私はORMを使いたくないのですが、それは非常に簡単だからです。以前の私の単純なpythonアプリケーションで使用して以来、私はpsycopg2を使いたいです。今、DB接続をいつどのように開いて閉じるべきかを知りたい。私はこれを見た:http://flask.pocoo.org/docs/0.12/tutorial/dbcon/しかしそれの答えを見つけることができませんでした。Flask + Postgresqlとdb接続を開く/閉じる

答えて

1

http://flask.pocoo.org/docs/0.12/patterns/sqlite3/がより良い例を提供します。そのsqlliteのために、しかし、それはすべて、最初の接続が確立される方法です。 https://github.com/pallets/flask/blob/master/examples/flaskr/flaskr/flaskr.py:あなたがここにDBの使用方法を示す完全に動作するコードの例を見つけることができます

import sqlite3 
from flask import g 

DATABASE = '/path/to/database.db' 

@app.before_request 
def get_db(): 
    db = getattr(g, '_database', None) 
    if db is None: 
     db = g._database = sqlite3.connect(DATABASE) 
    return db 

@app.teardown_appcontext 
def close_connection(exception): 
    db = getattr(g, '_database', None) 
    if db is not None: 
     db.close() 

:だからここでそれはsqllite3を使用して、中にあなたのpsycopg2通話を置きます。上記の例では、@app.before_requestフックを使用してルートメソッドを呼び出す前に、@app.routeメソッドで要求ごとにdb接続を手動で確立する例に注意してください。

あなたはORMが不要だと言っていましたが、SQLAlchemyをnon-orm形式で使用することもできます:https://docs.sqlalchemy.org/en/latest/core/tutorial.html。これの利点は、db connectioを管理するための特定のsessionオブジェクトがあることです。http://flask.pocoo.org/docs/0.12/patterns/sqlalchemy/

+0

ここで 'get_db'を呼び出す必要がありますか? – Jodooomi

+0

文書では、現在のコンテキスト(この場合は要求)にコールを結合する必要があるので、メソッドに '@ app.before_request'属性を設定する必要があります。コードサンプルを更新しました。 – user783836

+0

"g"は何ですか?変数を格納できるセッションオブジェクトのようなものですか? – Jodooomi

関連する問題