Source code for autocnet.io.db.connection

import socket

import sqlalchemy
from sqlalchemy import create_engine, pool, orm
from sqlalchemy.orm import create_session, scoped_session, sessionmaker

import os
import socket
import warnings
import yaml


class Parent:
    def __init__(self, config):
        Session, _ = new_connection(config)
        self.session = Session()
        self.session.begin()

[docs]def new_connection(dbconfig): """ Using the user supplied config create a NullPool database connection. Returns ------- Session : object An SQLAlchemy session object engine : object An SQLAlchemy engine object """ db_uri = 'postgresql://{}:{}@{}:{}/{}'.format(dbconfig['username'], dbconfig['password'], dbconfig['host'], dbconfig['pgbouncer_port'], dbconfig['name']) hostname = socket.gethostname() engine = sqlalchemy.create_engine(db_uri, poolclass=sqlalchemy.pool.NullPool, connect_args={"application_name":f"AutoCNet_{hostname}"}, isolation_level="AUTOCOMMIT") Session = orm.sessionmaker(bind=engine, autocommit=False) return Session, engine