我正在尝试构建一个简单的Flask Web应用程序,用于查询postgres数据库并插入/删除数据。我甚至不确定更新/插入,但至少我只是查询数据库。我不想使用任何ORM,因为它非常简单。我想使用psycopg2
,因为我之前在我的简单python应用程序中使用过它。现在我想知道如何以及何时打开和关闭数据库连接。我已经看到了这一点:http://flask.pocoo.org/docs/0.12/tutorial/dbcon/但它没有找到答案。
答案 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方式使用SQLAlchemy
:https://docs.sqlalchemy.org/en/latest/core/tutorial.html。这样做的好处是有用于管理数据库连接的特定session
对象:http://flask.pocoo.org/docs/0.12/patterns/sqlalchemy/