diff --git a/Ccs/database/config_db.py b/Ccs/database/config_db.py index e14a663e85de83a3588b9726ba5dff251134fc00..798803bd426900d44d18873910470fb1811783d1 100644 --- a/Ccs/database/config_db.py +++ b/Ccs/database/config_db.py @@ -4,6 +4,7 @@ cfg = confignator.get_config() user = cfg.get('database', 'user') pw = cfg.get('database', 'password') +host = cfg.get('database', 'host') # --------------- SMILE --------------- # idb_schema_name = 'mib_smile_sxi' @@ -19,4 +20,4 @@ telemetry_pool_table = 'tm_pool' telemetry_table = 'tm' # --------------- database connection --------------- -mysql_connection_string = 'mysql://{}:{}@localhost'.format(user, pw) +mysql_connection_string = 'mysql://{}:{}@{}'.format(user, pw, host) diff --git a/Ccs/database/tm_db.py b/Ccs/database/tm_db.py index 126f8527a1935d98b3a4442ca21133bcc9653cba..8d14fe4c0bf9937637c2dca11c9b7d05cba8d1a4 100644 --- a/Ccs/database/tm_db.py +++ b/Ccs/database/tm_db.py @@ -7,7 +7,7 @@ import sys from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import ( - Column, Integer, Boolean, Unicode, Index, UniqueConstraint, ForeignKey, create_engine) + Column, Integer, Boolean, Unicode, Index, UniqueConstraint, ForeignKey, create_engine, engine) from sqlalchemy.dialects.mysql import VARBINARY from sqlalchemy.orm import sessionmaker, relationship, scoped_session # from sqlalchemy.orm.session import Session @@ -229,31 +229,36 @@ class FEEDataTelemetryPool(FEEDATA_BASE): # type: ignore # # return session_factory() +def gen_mysql_conn_str(user=config_db.user, pw=config_db.pw, host=config_db.host, schema=''): + return engine.url.URL.create(drivername='mysql', username=user, password=pw, host=host, database=schema) + +#SQLSOCKET='' + + def create_storage_db(protocol='PUS', force=False): if protocol.upper() not in ['PUS', 'RMAP', 'FEEDATA', 'ALL']: print('Unsupported protocol {}. Use either "PUS", "RMAP", "FEEDATA" or "ALL".'.format(protocol)) return elif protocol.upper() == 'ALL': print('Creating schema "{}" for {} data storage...'.format(config_db.storage_schema_name, protocol.upper())) - engine = create_engine(config_db.mysql_connection_string, echo="-v" in sys.argv) + _engine = create_engine(gen_mysql_conn_str(), echo="-v" in sys.argv) if force: - engine.execute('DROP SCHEMA IF EXISTS {}'.format(config_db.storage_schema_name)) - engine.execute('CREATE SCHEMA IF NOT EXISTS {}'.format(config_db.storage_schema_name)) - engine.dispose() - engine = create_engine(config_db.mysql_connection_string + '/' + config_db.storage_schema_name, echo="-v" in sys.argv) + _engine.execute('DROP SCHEMA IF EXISTS {}'.format(config_db.storage_schema_name)) + _engine.execute('CREATE SCHEMA IF NOT EXISTS {}'.format(config_db.storage_schema_name)) + _engine.dispose() + _engine = create_engine(gen_mysql_conn_str(schema=config_db.storage_schema_name), echo="-v" in sys.argv) for protocol in protocols: - protocols[protocol][1].metadata.create_all(engine) + protocols[protocol][1].metadata.create_all(_engine) print('...DONE') else: print('Creating schema "{}" for {} data storage...'.format(config_db.storage_schema_name, protocol.upper())) - engine = create_engine(config_db.mysql_connection_string, echo="-v" in sys.argv) + _engine = create_engine(gen_mysql_conn_str(), echo="-v" in sys.argv) if force: - engine.execute('DROP SCHEMA IF EXISTS {}'.format(config_db.storage_schema_name)) - engine.execute('CREATE SCHEMA IF NOT EXISTS {}'.format(config_db.storage_schema_name)) - engine.dispose() - engine = create_engine(config_db.mysql_connection_string + '/' + config_db.storage_schema_name, - echo="-v" in sys.argv) - protocols[protocol.upper()][1].metadata.create_all(engine) + _engine.execute('DROP SCHEMA IF EXISTS {}'.format(config_db.storage_schema_name)) + _engine.execute('CREATE SCHEMA IF NOT EXISTS {}'.format(config_db.storage_schema_name)) + _engine.dispose() + _engine = create_engine(gen_mysql_conn_str(schema=config_db.storage_schema_name), echo="-v" in sys.argv) + protocols[protocol.upper()][1].metadata.create_all(_engine) print('...DONE') @@ -273,8 +278,8 @@ def scoped_session_maker(db_schema, idb_version=None): else: print('DB schema must be either "idb" or "storage"') return - engine = create_engine(config_db.mysql_connection_string + '/' + schema, echo="-v" in sys.argv, pool_size=15) - session_factory = sessionmaker(bind=engine) + _engine = create_engine(gen_mysql_conn_str(schema=schema), echo="-v" in sys.argv, pool_size=15) + session_factory = sessionmaker(bind=_engine) scoped_session_factory = scoped_session(session_factory) return scoped_session_factory