Skip to content
Snippets Groups Projects
Commit bc90bf1c authored by Marko Mecina's avatar Marko Mecina
Browse files

update MySQL connection string generation/handling

parent 05f9b1b0
No related branches found
No related tags found
Loading
...@@ -4,6 +4,7 @@ cfg = confignator.get_config() ...@@ -4,6 +4,7 @@ cfg = confignator.get_config()
user = cfg.get('database', 'user') user = cfg.get('database', 'user')
pw = cfg.get('database', 'password') pw = cfg.get('database', 'password')
host = cfg.get('database', 'host')
# --------------- SMILE --------------- # --------------- SMILE ---------------
# idb_schema_name = 'mib_smile_sxi' # idb_schema_name = 'mib_smile_sxi'
...@@ -19,4 +20,4 @@ telemetry_pool_table = 'tm_pool' ...@@ -19,4 +20,4 @@ telemetry_pool_table = 'tm_pool'
telemetry_table = 'tm' telemetry_table = 'tm'
# --------------- database connection --------------- # --------------- database connection ---------------
mysql_connection_string = 'mysql://{}:{}@localhost'.format(user, pw) mysql_connection_string = 'mysql://{}:{}@{}'.format(user, pw, host)
...@@ -7,7 +7,7 @@ import sys ...@@ -7,7 +7,7 @@ import sys
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import ( 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.dialects.mysql import VARBINARY
from sqlalchemy.orm import sessionmaker, relationship, scoped_session from sqlalchemy.orm import sessionmaker, relationship, scoped_session
# from sqlalchemy.orm.session import Session # from sqlalchemy.orm.session import Session
...@@ -229,31 +229,36 @@ class FEEDataTelemetryPool(FEEDATA_BASE): # type: ignore ...@@ -229,31 +229,36 @@ class FEEDataTelemetryPool(FEEDATA_BASE): # type: ignore
# # return session_factory() # # 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): def create_storage_db(protocol='PUS', force=False):
if protocol.upper() not in ['PUS', 'RMAP', 'FEEDATA', 'ALL']: if protocol.upper() not in ['PUS', 'RMAP', 'FEEDATA', 'ALL']:
print('Unsupported protocol {}. Use either "PUS", "RMAP", "FEEDATA" or "ALL".'.format(protocol)) print('Unsupported protocol {}. Use either "PUS", "RMAP", "FEEDATA" or "ALL".'.format(protocol))
return return
elif protocol.upper() == 'ALL': elif protocol.upper() == 'ALL':
print('Creating schema "{}" for {} data storage...'.format(config_db.storage_schema_name, protocol.upper())) 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: if force:
engine.execute('DROP SCHEMA IF EXISTS {}'.format(config_db.storage_schema_name)) _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.execute('CREATE SCHEMA IF NOT EXISTS {}'.format(config_db.storage_schema_name))
engine.dispose() _engine.dispose()
engine = create_engine(config_db.mysql_connection_string + '/' + config_db.storage_schema_name, echo="-v" in sys.argv) _engine = create_engine(gen_mysql_conn_str(schema=config_db.storage_schema_name), echo="-v" in sys.argv)
for protocol in protocols: for protocol in protocols:
protocols[protocol][1].metadata.create_all(engine) protocols[protocol][1].metadata.create_all(_engine)
print('...DONE') print('...DONE')
else: else:
print('Creating schema "{}" for {} data storage...'.format(config_db.storage_schema_name, protocol.upper())) 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: if force:
engine.execute('DROP SCHEMA IF EXISTS {}'.format(config_db.storage_schema_name)) _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.execute('CREATE SCHEMA IF NOT EXISTS {}'.format(config_db.storage_schema_name))
engine.dispose() _engine.dispose()
engine = create_engine(config_db.mysql_connection_string + '/' + config_db.storage_schema_name, _engine = create_engine(gen_mysql_conn_str(schema=config_db.storage_schema_name), echo="-v" in sys.argv)
echo="-v" in sys.argv) protocols[protocol.upper()][1].metadata.create_all(_engine)
protocols[protocol.upper()][1].metadata.create_all(engine)
print('...DONE') print('...DONE')
...@@ -273,8 +278,8 @@ def scoped_session_maker(db_schema, idb_version=None): ...@@ -273,8 +278,8 @@ def scoped_session_maker(db_schema, idb_version=None):
else: else:
print('DB schema must be either "idb" or "storage"') print('DB schema must be either "idb" or "storage"')
return return
engine = create_engine(config_db.mysql_connection_string + '/' + schema, echo="-v" in sys.argv, pool_size=15) _engine = create_engine(gen_mysql_conn_str(schema=schema), echo="-v" in sys.argv, pool_size=15)
session_factory = sessionmaker(bind=engine) session_factory = sessionmaker(bind=_engine)
scoped_session_factory = scoped_session(session_factory) scoped_session_factory = scoped_session(session_factory)
return scoped_session_factory return scoped_session_factory
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment