【发布时间】:2013-03-07 23:34:06
【问题描述】:
我正在 heroku 上使用他们的 Postgres 插件和开发计划进行开发,该计划的连接限制为 20。我是python 的新手,这可能很简单,但我发现很难在不引起OperationalError: (OperationalError) FATAL: too many connections for role 的情况下抽象数据库连接。
目前我有databeam.py:
import os
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from settings import databaseSettings
class Db(object):
def __init__(self):
self.app = Flask(__name__)
self.app.config.from_object(__name__)
self.app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', databaseSettings())
self.db = SQLAlchemy(self.app)
db = Db()
当我为页面创建控制器时,我会这样做:
import databeam
db = databeam.db
locations = databeam.locations
templateVars = db.db.session.query(locations).filter(locations.parent == 0).order_by(locations.order.asc()).all()
这确实产生了我想要的东西,但缓慢且有时会导致上面提到的错误。由于我来自php 背景,我对如何处理数据库连接有一定的想法(即像上面的示例),但我担心它不适合python。
在一个地方抽象数据库连接然后在所有导入中使用相同的连接的正确方法是什么?
【问题讨论】:
标签: python postgresql heroku sqlalchemy flask