Ejemplo n.º 1
0
def get_engine(echo=True):
    """ Creates a engine to a specific database.
        :returns: engine
    """
    global _ENGINE
    if not _ENGINE:
        sql_connection = config_get(DATABASE_SECTION, 'default')
        config_params = [('pool_size', int), ('max_overflow', int),
                         ('pool_timeout', int), ('pool_recycle', int),
                         ('echo', int), ('echo_pool', str),
                         ('pool_reset_on_return', str),
                         ('use_threadlocal', int)]
        params = {}
        for param, param_type in config_params:
            try:
                params[param] = param_type(config_get(DATABASE_SECTION, param))
            except:  # noqa: B901
                pass
        _ENGINE = create_engine(sql_connection, **params)
        if 'mysql' in sql_connection:
            event.listen(_ENGINE, 'checkout', mysql_ping_listener)
            event.listen(_ENGINE, 'connect', mysql_convert_decimal_to_float)
        elif 'postgresql' in sql_connection:
            event.listen(_ENGINE, 'connect', psql_convert_decimal_to_float)
        elif 'sqlite' in sql_connection:
            event.listen(_ENGINE, 'connect', _fk_pragma_on_connect)
        elif 'oracle' in sql_connection:
            event.listen(_ENGINE, 'connect', my_on_connect)
    assert _ENGINE
    return _ENGINE
Ejemplo n.º 2
0
def load_config_daemons():
    if config_has_section(Sections.Main) and config_has_option(Sections.Main, 'daemons'):
        daemons = config_get(Sections.Main, 'daemons')
        daemons = daemons.split(',')
        daemons = [d.strip() for d in daemons]
        return daemons
    return []
Ejemplo n.º 3
0
def get_dump_engine(echo=False):
    """ Creates a dump engine to a specific database.
        :returns: engine """

    statements = list()

    def dump(sql, *multiparams, **params):
        statement = str(sql.compile(dialect=engine.dialect))
        if statement in statements:
            return
        statements.append(statement)
        if statement.endswith(')\n\n'):
            if engine.dialect.name == 'oracle':
                print(statement.replace(')\n\n', ') PCTFREE 0;\n'))
            else:
                print(statement.replace(')\n\n', ');\n'))
        elif statement.endswith(')'):
            print(statement.replace(')', ');\n'))
        else:
            print(statement)

    sql_connection = config_get(DATABASE_SECTION, 'default')

    engine = create_engine(sql_connection,
                           echo=echo,
                           strategy='mock',
                           executor=dump)
    return engine
Ejemplo n.º 4
0
def setup_logging(name):
    """
    Setup logging
    """
    if config_has_section('common') and config_has_option(
            'common', 'loglevel'):
        loglevel = getattr(logging, config_get('common', 'loglevel').upper())
    else:
        loglevel = logging.INFO

    if config_has_section('common') and config_has_option('common', 'logdir'):
        logging.basicConfig(
            filename=os.path.join(config_get('common', 'logdir'), name),
            level=loglevel,
            format='%(asctime)s\t%(threadName)s\t%(levelname)s\t%(message)s')
    else:
        logging.basicConfig(
            stream=sys.stdout,
            level=loglevel,
            format='%(asctime)s\t%(threadName)s\t%(levelname)s\t%(message)s')
Ejemplo n.º 5
0
def check_rest_host():
    """
    Function to check whether rest host is defined in config.
    To be used to decide whether to skip some test functions.

    :returns True: if rest host is available. Otherwise False.
    """
    if config_has_option('rest', 'host'):
        host = config_get('rest', 'host')
        if host:
            return True
    return False
Ejemplo n.º 6
0
def check_database():
    """
    Function to check whether database is defined in config.
    To be used to decide whether to skip some test functions.

    :returns True: if database.default is available. Otherwise False.
    """
    if config_has_option('database', 'default'):
        database = config_get('database', 'default')
        if database:
            return True
    return False
Ejemplo n.º 7
0
def get_rest_host():
    """
    Function to get rest host
    """
    return config_get('rest', 'host')
Ejemplo n.º 8
0
 def get_resouce_name(self):
     return config_get(Sections.ResourceManager, 'resource_name')
Ejemplo n.º 9
0
from os.path import basename

from sqlalchemy import create_engine, event
from sqlalchemy.exc import DatabaseError, DisconnectionError, OperationalError, TimeoutError
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, scoped_session

from ess.common.config import config_get, config_has_option
from ess.common.exceptions import ESSException, DatabaseException

DATABASE_SECTION = 'database'

BASE = declarative_base()

if config_has_option(DATABASE_SECTION, 'schema'):
    DEFAULT_SCHEMA_NAME = config_get(DATABASE_SECTION, 'schema')
    if DEFAULT_SCHEMA_NAME:
        BASE.metadata.schema = DEFAULT_SCHEMA_NAME

_MAKER, _ENGINE, _LOCK = None, None, Lock()


def _fk_pragma_on_connect(dbapi_con, con_record):
    # Hack for previous versions of sqlite3
    try:
        dbapi_con.execute('pragma foreign_keys=ON')
    except AttributeError:
        pass


def mysql_ping_listener(dbapi_conn, connection_rec, connection_proxy):