Flask + Postgresql并打开/关闭数据库连接

时间:2017-01-03 05:31:56

标签: python postgresql flask

我正在尝试构建一个简单的Flask Web应用程序,用于查询postgres数据库并插入/删除数据。我甚至不确定更新/插入,但至少我只是查询数据库。我不想使用任何ORM,因为它非常简单。我想使用psycopg2,因为我之前在我的简单python应用程序中使用过它。现在我想知道如何以及何时打开和关闭数据库连接。我已经看到了这一点:http://flask.pocoo.org/docs/0.12/tutorial/dbcon/但它没有找到答案。

1 个答案:

答案 0 :(得分:2)

http://flask.pocoo.org/docs/0.12/patterns/sqlite3/提供了一个更好的例子。它用于sqllite,但所有不同的是如何建立初始连接。因此,在使用sqllite3的位置,请将psycopg2来电置于:

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()

您可以在此处找到一个完整工作的代码示例,其中显示了db的使用:https://github.com/pallets/flask/blob/master/examples/flaskr/flaskr/flaskr.py。请注意,在@app.route方法中按请求手动建立数据库连接的示例,而上面的示例使用@app.before_request挂钩在调用路由方法之前建立它。

你说你不想要一个ORM,但你也可以以非orm方式使用SQLAlchemyhttps://docs.sqlalchemy.org/en/latest/core/tutorial.html。这样做的好处是有用于管理数据库连接的特定session对象:http://flask.pocoo.org/docs/0.12/patterns/sqlalchemy/