SQLAlchemy/Flask/PostgreSQL池连接

Noé*_*ieu 12 postgresql sqlalchemy flask flask-sqlalchemy

在与Django玩了很长时间后,我正在尝试使用SQLAlchemy的一些Flask,我必须说我非常喜欢它.但是有一些我没有得到的东西:我有一个使用PostgreSQL的小型Flask/SQLAlchemy应用程序.在我的__init__.py档案中,我有:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('settings')
db = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud)

我想知道:

  1. 有自动连接池吗?或者每次调用Model.query ...都会创建一个到数据库的新连接?
  2. 如果没有,我该如何配置它?
  3. 如果是,默认值是什么,我该如何修改这些值?

非常感谢你的帮助!

Mar*_*eth 11

Flask-SQLAlchemy使用SQLAlchemy中的create_engine方法创建SQLAlchemy引擎,您可以在其中阅读create_engine函数文档中的一些选项和默认值.根据Flask-SQLAlchemy文档,您可以指定一些特定于池的配置选项.您可以通过各种方式设置这些值,您可以在Flask配置中阅读这些值.您已经有一个settings配置模块,因此您可以添加到您的配置文件...

SQLALCHEMY_POOL_SIZE=10
Run Code Online (Sandbox Code Playgroud)

所以,是的,有自动连接池.默认情况下,这由SQLAlchemy提供.在发布此答案时,Flask-SQLAlchemy允许您使用配置文件修改其中一些选项(尽管看起来有一个旧的pull请求允许您指定ANY create_engine参数).

如果您需要比Flask-SQLAlchemy提供的更多支持配置SQLAlchemy引擎,您可以使用不带Flask-SQLAlchemy包装器的SQLAlchemy,也可以修改Flask-SQLAlchemy(可能合并拉取请求)以允许此操作.

  • 关于如何将连接池设置为 `NullPool` 的任何想法? (2认同)