Jak zmniejszyć liczbę połączeń za pomocą SQLAlchemy + postgreSQL?
Rozwijam sięheroku używając ichPostgres dodatek z planem Dev, który ma limit połączenia20
. jestem nowy wpython
i może to być trywialne, ale trudno jest zoptymalizować połączenie z bazą danych bez powodowaniaOperationalError: (OperationalError) FATAL: too many connections for role
.
Obecnie mamdatabeam.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()
A kiedy tworzę kontroler strony, robię to:
import databeam
db = databeam.db
locations = databeam.locations
templateVars = db.db.session.query(locations).filter(locations.parent == 0).order_by(locations.order.asc()).all()
To daje to, czego chcę, ale powoli i czasami powoduje błąd wymieniony powyżej. Odkąd pochodzę zphp
background Mam pewien sposób myślenia o tym, jak radzić sobie z połączeniami DB (np. jak w powyższym przykładzie), ale obawiam się, że nie pasuje on dopython
.
Jaki jest właściwy sposób wyodrębniania połączenia db w jednym miejscu, a następnie używania tego samego połączenia we wszystkich importach?