Loading src/common/database.py +24 −0 Original line number Diff line number Diff line Loading @@ -178,3 +178,27 @@ class Database(ABC): :param value: the value for the connection variable """ self.connection_info[variable] = value @staticmethod def create_connection_info( db_name=None, db_user=None, db_password=None, db_host=None, db_port=None, db_schema=None, db_engine=None, db_timeout=None ): connection_info = { "dbName": db_name if db_name is not None else Database.DEFAULT_DB, "dbUser": db_user if db_user is not None else Database.DEFAULT_USER, "dbPassword": db_password if db_password is not None else Database.DEFAULT_PW, "dbHost": db_host if db_host is not None else Database.DEFAULT_HOST, "dbPort": db_port if db_port is not None else Database.DEFAULT_PORT, "dbTimeout": db_timeout if db_timeout is not None else Database.DEFAULT_TIMEOUT, "dbSchema": db_schema if db_schema is not None else Database.DEFAULT_SCHEMA, "dbEngine": db_engine if db_engine is not None else Database.DEFAULT_ENGINE, "uri": f"{db_engine if db_engine is not None else Database.DEFAULT_ENGINE}://{db_user if db_user is not None else Database.DEFAULT_USER}:{db_password if db_password is not None else Database.DEFAULT_PW}@{db_host if db_host is not None else Database.DEFAULT_HOST}/{db_name if db_name is not None else Database.DEFAULT_DB}", } return connection_info src/common/mixins/influx.py +11 −5 Original line number Diff line number Diff line Loading @@ -16,14 +16,20 @@ class InfluxMixin: def open(self): """Create the InfluxDB client instance.""" db_name = self.connection_info.get("dbName", InfluxMixin.DEFAULT_DB) db_user = self.connection_info.get("dbUser", InfluxMixin.DEFAULT_USER) db_password = self.connection_info.get("dbPassword", InfluxMixin.DEFAULT_PASSWORD) db_host = self.connection_info.get("dbHost", InfluxMixin.DEFAULT_HOST) db_port = self.connection_info.get("dbPort", InfluxMixin.DEFAULT_PORT) self.logger.debug("Creating InfluxDB Client Instance") try: self.client = InfluxDBClient( host=self.DEFAULT_HOST, port=self.DEFAULT_PORT, username=self.DEFAULT_USER, password=self.DEFAULT_PASSWORD, database=self.DEFAULT_DB, host=db_host, port=db_port, username=db_user, password=db_password, database=db_name, ) self.logger.debug("Successfully created InfluxDB client instance") except Exception as error: Loading src/common/mixins/mssql.py +11 −13 Original line number Diff line number Diff line Loading @@ -39,26 +39,24 @@ class MSSQLMixin: :return: True if connection established, else false""" self.logger.debug("Opening Database Object") self.modify_connection_info("dbName", MSSQLMixin.DEFAULT_DB) self.modify_connection_info("dbUser", MSSQLMixin.DEFAULT_USER) self.modify_connection_info("dbPassword", MSSQLMixin.DEFAULT_PW) self.modify_connection_info("dbHost", MSSQLMixin.DEFAULT_HOST) self.modify_connection_info("dbPort", MSSQLMixin.DEFAULT_PORT) # self.modify_connection_info('dbTimeout', MSSQLMixin.DEFAULT_TIMEOUT) db_name = self.connection_info.get("dbName", MSSQLMixin.DEFAULT_DB) db_user = self.connection_info.get("dbUser", MSSQLMixin.DEFAULT_USER) db_password = self.connection_info.get("dbPassword", MSSQLMixin.DEFAULT_PW) db_host = self.connection_info.get("dbHost", MSSQLMixin.DEFAULT_HOST) try: msg = ( "\nConnecting information\n" + f"Database: {self.connection_info['dbName']}\n" + f"Host: {self.connection_info['dbHost']}\n" + f"User: {self.connection_info['dbUser']}\n" + f"Database: {db_name}\n" + f"Host: {db_host}\n" + f"User: {db_user}\n" ) self.logger.debug(msg) self.connection = pymssql.connect( database=self.connection_info["dbName"], user=self.connection_info["dbUser"], password=self.connection_info["dbPassword"], host=self.connection_info["dbHost"], database=db_name, user=db_user, password=db_password, host=db_user, ) self.logger.debug("Successfully opened database connection") self.cursor = self.connection.cursor() Loading src/common/mixins/multiple.py +8 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,14 @@ class MultiDatabase: mixin = self._get_mixin_for_type(db_type=db_type) if mixin: db_instance = type(db_type.capitalize() + "DB", (mixin, Database), {})() conn_info = Database.create_connection_info( db_name=config.get('DATABASE_DB', None), db_user=config.get('DATABASE_USER', None), db_password=config.get('DATABASE_PW', None), db_host=config.get('DATABASE_HOST', None), db_port=config.get('DATABASE_PORT', None), ) db_instance = type(db_type.capitalize() + "DB", (mixin, Database), {})(connection_info=conn_info) self.databases[db_id] = db_instance else: self.logger.warning(f"Skipping unknown Database type: {db_type}") Loading src/common/mixins/postgres.py +13 −12 Original line number Diff line number Diff line Loading @@ -55,22 +55,23 @@ class PostgresMixin: :param search_path: the search path to default to :return: True if connection established, else false """ self.modify_connection_info("dbName", PostgresMixin.DEFAULT_DB) self.modify_connection_info("dbUser", PostgresMixin.DEFAULT_USER) self.modify_connection_info("dbPassword", PostgresMixin.DEFAULT_PW) self.modify_connection_info("dbHost", PostgresMixin.DEFAULT_HOST) self.modify_connection_info("dbPort", PostgresMixin.DEFAULT_PORT) self.modify_connection_info("dbTimeout", PostgresMixin.DEFAULT_TIMEOUT) # Use existing connection info if provided, otherwise default to class attributes db_name = self.connection_info.get("dbName", PostgresMixin.DEFAULT_DB) db_user = self.connection_info.get("dbUser", PostgresMixin.DEFAULT_USER) db_password = self.connection_info.get("dbPassword", PostgresMixin.DEFAULT_PW) db_host = self.connection_info.get("dbHost", PostgresMixin.DEFAULT_HOST) db_port = self.connection_info.get("dbPort", PostgresMixin.DEFAULT_PORT) db_timeout = self.connection_info.get("dbTimeout", PostgresMixin.DEFAULT_TIMEOUT) self.logger.debug("Opening Database Connection and creating Cursor") try: self.connection = psycopg2.connect( database=self.connection_info["dbName"], user=self.connection_info["dbUser"], password=self.connection_info["dbPassword"], host=self.connection_info["dbHost"], port=self.connection_info["dbPort"], connect_timeout=self.connection_info["dbTimeout"], database=db_name, user=db_user, password=db_password, host=db_host, port=db_port, connect_timeout=db_timeout, ) self.connection.set_client_encoding("UTF8") self.logger.debug("Successfully opened connection to database") Loading Loading
src/common/database.py +24 −0 Original line number Diff line number Diff line Loading @@ -178,3 +178,27 @@ class Database(ABC): :param value: the value for the connection variable """ self.connection_info[variable] = value @staticmethod def create_connection_info( db_name=None, db_user=None, db_password=None, db_host=None, db_port=None, db_schema=None, db_engine=None, db_timeout=None ): connection_info = { "dbName": db_name if db_name is not None else Database.DEFAULT_DB, "dbUser": db_user if db_user is not None else Database.DEFAULT_USER, "dbPassword": db_password if db_password is not None else Database.DEFAULT_PW, "dbHost": db_host if db_host is not None else Database.DEFAULT_HOST, "dbPort": db_port if db_port is not None else Database.DEFAULT_PORT, "dbTimeout": db_timeout if db_timeout is not None else Database.DEFAULT_TIMEOUT, "dbSchema": db_schema if db_schema is not None else Database.DEFAULT_SCHEMA, "dbEngine": db_engine if db_engine is not None else Database.DEFAULT_ENGINE, "uri": f"{db_engine if db_engine is not None else Database.DEFAULT_ENGINE}://{db_user if db_user is not None else Database.DEFAULT_USER}:{db_password if db_password is not None else Database.DEFAULT_PW}@{db_host if db_host is not None else Database.DEFAULT_HOST}/{db_name if db_name is not None else Database.DEFAULT_DB}", } return connection_info
src/common/mixins/influx.py +11 −5 Original line number Diff line number Diff line Loading @@ -16,14 +16,20 @@ class InfluxMixin: def open(self): """Create the InfluxDB client instance.""" db_name = self.connection_info.get("dbName", InfluxMixin.DEFAULT_DB) db_user = self.connection_info.get("dbUser", InfluxMixin.DEFAULT_USER) db_password = self.connection_info.get("dbPassword", InfluxMixin.DEFAULT_PASSWORD) db_host = self.connection_info.get("dbHost", InfluxMixin.DEFAULT_HOST) db_port = self.connection_info.get("dbPort", InfluxMixin.DEFAULT_PORT) self.logger.debug("Creating InfluxDB Client Instance") try: self.client = InfluxDBClient( host=self.DEFAULT_HOST, port=self.DEFAULT_PORT, username=self.DEFAULT_USER, password=self.DEFAULT_PASSWORD, database=self.DEFAULT_DB, host=db_host, port=db_port, username=db_user, password=db_password, database=db_name, ) self.logger.debug("Successfully created InfluxDB client instance") except Exception as error: Loading
src/common/mixins/mssql.py +11 −13 Original line number Diff line number Diff line Loading @@ -39,26 +39,24 @@ class MSSQLMixin: :return: True if connection established, else false""" self.logger.debug("Opening Database Object") self.modify_connection_info("dbName", MSSQLMixin.DEFAULT_DB) self.modify_connection_info("dbUser", MSSQLMixin.DEFAULT_USER) self.modify_connection_info("dbPassword", MSSQLMixin.DEFAULT_PW) self.modify_connection_info("dbHost", MSSQLMixin.DEFAULT_HOST) self.modify_connection_info("dbPort", MSSQLMixin.DEFAULT_PORT) # self.modify_connection_info('dbTimeout', MSSQLMixin.DEFAULT_TIMEOUT) db_name = self.connection_info.get("dbName", MSSQLMixin.DEFAULT_DB) db_user = self.connection_info.get("dbUser", MSSQLMixin.DEFAULT_USER) db_password = self.connection_info.get("dbPassword", MSSQLMixin.DEFAULT_PW) db_host = self.connection_info.get("dbHost", MSSQLMixin.DEFAULT_HOST) try: msg = ( "\nConnecting information\n" + f"Database: {self.connection_info['dbName']}\n" + f"Host: {self.connection_info['dbHost']}\n" + f"User: {self.connection_info['dbUser']}\n" + f"Database: {db_name}\n" + f"Host: {db_host}\n" + f"User: {db_user}\n" ) self.logger.debug(msg) self.connection = pymssql.connect( database=self.connection_info["dbName"], user=self.connection_info["dbUser"], password=self.connection_info["dbPassword"], host=self.connection_info["dbHost"], database=db_name, user=db_user, password=db_password, host=db_user, ) self.logger.debug("Successfully opened database connection") self.cursor = self.connection.cursor() Loading
src/common/mixins/multiple.py +8 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,14 @@ class MultiDatabase: mixin = self._get_mixin_for_type(db_type=db_type) if mixin: db_instance = type(db_type.capitalize() + "DB", (mixin, Database), {})() conn_info = Database.create_connection_info( db_name=config.get('DATABASE_DB', None), db_user=config.get('DATABASE_USER', None), db_password=config.get('DATABASE_PW', None), db_host=config.get('DATABASE_HOST', None), db_port=config.get('DATABASE_PORT', None), ) db_instance = type(db_type.capitalize() + "DB", (mixin, Database), {})(connection_info=conn_info) self.databases[db_id] = db_instance else: self.logger.warning(f"Skipping unknown Database type: {db_type}") Loading
src/common/mixins/postgres.py +13 −12 Original line number Diff line number Diff line Loading @@ -55,22 +55,23 @@ class PostgresMixin: :param search_path: the search path to default to :return: True if connection established, else false """ self.modify_connection_info("dbName", PostgresMixin.DEFAULT_DB) self.modify_connection_info("dbUser", PostgresMixin.DEFAULT_USER) self.modify_connection_info("dbPassword", PostgresMixin.DEFAULT_PW) self.modify_connection_info("dbHost", PostgresMixin.DEFAULT_HOST) self.modify_connection_info("dbPort", PostgresMixin.DEFAULT_PORT) self.modify_connection_info("dbTimeout", PostgresMixin.DEFAULT_TIMEOUT) # Use existing connection info if provided, otherwise default to class attributes db_name = self.connection_info.get("dbName", PostgresMixin.DEFAULT_DB) db_user = self.connection_info.get("dbUser", PostgresMixin.DEFAULT_USER) db_password = self.connection_info.get("dbPassword", PostgresMixin.DEFAULT_PW) db_host = self.connection_info.get("dbHost", PostgresMixin.DEFAULT_HOST) db_port = self.connection_info.get("dbPort", PostgresMixin.DEFAULT_PORT) db_timeout = self.connection_info.get("dbTimeout", PostgresMixin.DEFAULT_TIMEOUT) self.logger.debug("Opening Database Connection and creating Cursor") try: self.connection = psycopg2.connect( database=self.connection_info["dbName"], user=self.connection_info["dbUser"], password=self.connection_info["dbPassword"], host=self.connection_info["dbHost"], port=self.connection_info["dbPort"], connect_timeout=self.connection_info["dbTimeout"], database=db_name, user=db_user, password=db_password, host=db_host, port=db_port, connect_timeout=db_timeout, ) self.connection.set_client_encoding("UTF8") self.logger.debug("Successfully opened connection to database") Loading