From bc90bf1c3aaf2823b92c40b41c78b5092df1be1b Mon Sep 17 00:00:00 2001 From: Marko Mecina <marko.mecina@univie.ac.at> Date: Tue, 15 Feb 2022 13:42:43 +0100 Subject: [PATCH] update MySQL connection string generation/handling --- Ccs/database/config_db.py | 3 ++- Ccs/database/tm_db.py | 37 +++++++++++++++++++++---------------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/Ccs/database/config_db.py b/Ccs/database/config_db.py index e14a663..798803b 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 126f852..8d14fe4 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 -- GitLab