cof*_*ood 6 python psycopg2 flask
我应该如何将 psycopg2 与 Flask 一起使用?我怀疑每个请求都打开一个新连接不太好,那么我如何才能只打开一个连接并使其全局可供应用程序使用呢?
from flask import Flask
app = Flask(__name__)
app.config.from_object('config') # Now we can access the configuration variables via app.config["VAR_NAME"].
import psycopg2
import myapp.views
Run Code Online (Sandbox Code Playgroud)
Flask 或任何 Web 服务器都需要使用连接池,正如您正确提到的那样,为每个请求打开和关闭连接是不明智的。
psycopg2 提供开箱即用的连接池。AbstractConnectionPool您可以扩展和实现的类或可以SimpleConnectionPool开箱即用的类。根据您运行 Flask 应用程序的方式,您可以使用文档ThreadedConnectionPool中描述的内容:
与线程模块配合使用的连接池。
创建一个简单的 Flask 应用程序并向其中添加一个 ConnectionPool
import psycopg2
from psycopg2 import pool
from flask import Flask
app = Flask(__name__)
postgreSQL_pool = psycopg2.pool.SimpleConnectionPool(1, 20, user="postgres",
password="pass@#29",
host="127.0.0.1",
port="5432",
database="postgres_db")
@app.route('/')
def hello_world():
# Use getconn() to Get Connection from connection pool
ps_connection = postgreSQL_pool.getconn()
# use cursor() to get a cursor as normal
ps_cursor = ps_connection.cursor()
#
# use ps_cursor to interact with DB
#
# close cursor
ps_cursor.close()
# release the connection back to connection pool
postgreSQL_pool.putconn(ps_connection)
return 'Hello, World!'
Run Code Online (Sandbox Code Playgroud)
Flask 应用程序本身并不完整或尚未准备好用于生产,请按照Flask 文档上的说明来管理数据库凭据并在 Flask 上下文中跨 Flask 应用程序使用 Pool 对象
我强烈建议使用SQLAlchemy等库以及 Flask(作为包装器提供),它将维护连接并为您管理池。让你专注于你的逻辑
| 归档时间: |
|
| 查看次数: |
3342 次 |
| 最近记录: |