From 84fd717c574f02ba7a70fe6965106f0ec3a8dbb8 Mon Sep 17 00:00:00 2001 From: Ayush Shah Date: Thu, 3 Mar 2022 23:39:06 +0530 Subject: [PATCH] Sql_alchemy_helper Engine fix (#3116) * Added connect_args and options for creation of engine * Added connect_args to profiler engine * Error fixed on database_common profiler - isinstance error type or tuple of types --- .../metadata/ingestion/source/sql_alchemy_helper.py | 6 +++++- .../src/metadata/profiler/common/database_common.py | 12 ++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ingestion/src/metadata/ingestion/source/sql_alchemy_helper.py b/ingestion/src/metadata/ingestion/source/sql_alchemy_helper.py index 3ea9b9036e5..5151601e244 100644 --- a/ingestion/src/metadata/ingestion/source/sql_alchemy_helper.py +++ b/ingestion/src/metadata/ingestion/source/sql_alchemy_helper.py @@ -41,7 +41,11 @@ class SQLAlchemyHelper: """ Create a SQLAlchemy connection to Database """ - engine = create_engine(self.config.get_connection_url()) + engine = create_engine( + self.config.get_connection_url(), + **self.config.options, + connect_args=self.config.connect_args + ) conn = engine.connect() return conn diff --git a/ingestion/src/metadata/profiler/common/database_common.py b/ingestion/src/metadata/profiler/common/database_common.py index 2019bbda9df..ecbb4bd6839 100644 --- a/ingestion/src/metadata/profiler/common/database_common.py +++ b/ingestion/src/metadata/profiler/common/database_common.py @@ -218,7 +218,11 @@ class DatabaseCommon(Database): def __init__(self, config: SQLConnectionConfig): self.config = config self.connection_string = self.config.get_connection_url() - self.engine = create_engine(self.connection_string, **self.config.options) + self.engine = create_engine( + self.connection_string, + **self.config.options, + connect_args=self.config.connect_args, + ) self.connection = self.engine.raw_connection() self.inspector = inspect(self.engine) @@ -236,19 +240,19 @@ class DatabaseCommon(Database): def is_text(self, column_type: Type[types.TypeEngine]): for sql_type in _text_types: - if isinstance(column_type, sql_type): + if isinstance(column_type, type(sql_type)): return True return False def is_number(self, column_type: Type[types.TypeEngine]): for sql_type in _numeric_types: - if isinstance(column_type, sql_type): + if isinstance(column_type, type(sql_type)): return True return False def is_time(self, column_type: Type[types.TypeEngine]): for sql_type in _time_types: - if isinstance(column_type, sql_type): + if isinstance(column_type, type(sql_type)): return True return False