Esempio n. 1
0
    def get_connection_string(self, db_schema=None, db_url='localhost'):
        """Return database connection string (e.g. for sqlalchemy).

        Parameters
        ----------
        db_schema : db_schema
            Default database schema for the connection.
        db_url : str
            The IP address / domain name of the computer running the database server.
            With MySQL, if db_url == 'localhost', the client will try to establish
            the connection using a Unix domain socket instead.
        """
        # Set `db_url`
        if db_url is None:
            db_url = socket.gethostbyname(socket.gethostname())

        # Set `db_socket` if neccessary
        if db_url == 'localhost':
            db_socket = self.db_socket
            assert db_socket
        else:
            db_socket = None

        return make_connection_string(
            db_type=self.db_type,
            db_username='******',
            db_password='',
            db_url=db_url,
            db_port=str(self.db_port),  # TODO: remove str() cast when updated
            db_schema=db_schema,
            db_socket=db_socket,
        )
Esempio n. 2
0
 def __init__(
         self, connection_string, shared_folder, storage_host, datadir=None,
         echo=False, db_engine=None, use_compression=False):
     self.connection_string = connection_string
     self.shared_folder = op.abspath(shared_folder)
     os.makedirs(self.shared_folder, exist_ok=True)
     self.storage_host = storage_host
     self.datadir = datadir
     self.db_engine = (
         db_engine if db_engine is not None else MySQLDaemon._default_storage_engine)
     self.use_compression = use_compression
     #
     logger.debug("Connection string: {}".format(repr(self.connection_string)))
     self.engine = sa.create_engine(self.connection_string, echo=echo)
     try:
         self.db_schema = self._get_db_schema()
     except sa.exc.OperationalError:
         db_params = parse_connection_string(connection_string)
         _schema = db_params['db_schema']
         db_params['db_schema'] = ''
         logger.debug("db_params: {}".format(db_params))
         _connection_string = make_connection_string(**db_params)
         logger.debug("_connection_string: {}".format(_connection_string))
         _engine = sa.create_engine(_connection_string, echo=echo)
         _engine.execute('CREATE DATABASE {}'.format(_schema))
         self.db_schema = self._get_db_schema()
Esempio n. 3
0
 def drop_database_schema(self, db_schema):
     """Drop ELASPIC database schema."""
     # Create engine without a default schema
     engine = sa.create_engine(
         make_connection_string(**{**parse_connection_string(conf.CONFIGS["connection_string"]), "db_schema": ""})
     )
     sql_command = "DROP SCHEMA IF EXISTS {};".format(db_schema)
     logger.debug("sql_command: '{}'".format(sql_command))
     engine.execute(sql_command)
Esempio n. 4
0
def read_database_configs(config):
    """[DATABASE]."""
    if config.get('connection_string'):
        CONFIGS['connection_string'] = config.get('connection_string')
        CONFIGS.update(parse_connection_string(CONFIGS['connection_string']))
    elif config.get('db_type'):
        CONFIGS['db_type'] = config.get('db_type')
        CONFIGS['db_schema'] = config.get('db_schema')
        CONFIGS['db_database'] = config.get('db_database', fallback='')
        CONFIGS['db_username'] = config.get('db_username')
        CONFIGS['db_password'] = config.get('db_password')
        CONFIGS['db_url'] = config.get('db_url')
        CONFIGS['db_port'] = config.get('db_port')
        CONFIGS['db_socket'] = _get_db_socket(
            config, CONFIGS['db_type'], CONFIGS['db_url'])
        CONFIGS['connection_string'] = make_connection_string(**CONFIGS)
    CONFIGS['db_is_immutable'] = config.get('db_is_immutable', fallback=False)