import json from db_schema import generate_uri from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from delphi_es_utils.core.secrets_manager import get_secret def get_session_from_secret_key(key: str, engine_params=None) -> scoped_session: """connect to pg using password""" params = json.loads(get_secret(key)) conn_string = generate_uri( host=params['active_endpoint'], port=params['port'], db=params['database'], user=params['username'], password=params['password'], ) default_engine_params = {'max_overflow': 5, 'isolation_level': 'AUTOCOMMIT'} if engine_params: default_engine_params.update(engine_params) engine = create_engine(conn_string, **default_engine_params) return scoped_session(sessionmaker(bind=engine))