2017-01-03 1 views
0

Postgres DB를 쿼리하고 데이터를 삽입/삭제하는 간단한 Flask 웹 응용 프로그램을 작성하려고합니다. 나는 심지어 업데이트/삽입에 대해서는 확신하지 못하지만, 최소한 db를 쿼리 할 것입니다. 아주 간단하기 때문에 ORM을 사용하고 싶지 않습니다. 전에 간단한 파이썬 응용 프로그램에서 사용한 적이 있기 때문에 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.route 메서드에서 요청 당 db 연결을 수동으로 설정하는 예제입니다. 위 예제에서는 @app.before_request 후크를 사용하여 route 메서드를 호출하기 전에이를 설정합니다.

ORM을 원하지 않는다고 말했지만 SQLAlchemy을 사용할 수도 있습니다 (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