clickzetta-dbutils 1.0.8__py3-none-any.whl → 1.0.9__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -50,6 +50,7 @@ class DatabaseConnectionManager:
50
50
  self._engine: Optional[Engine] = None
51
51
  self._options = {}
52
52
  self._query: Dict[str, str] = {}
53
+ self._host: Optional[str] = None
53
54
 
54
55
  @classmethod
55
56
  def load_connection_configs(cls) -> Dict[str, ConnectionConfig]:
@@ -61,10 +62,18 @@ class DatabaseConnectionManager:
61
62
  """
62
63
  if not hasattr(DatabaseConnectionManager, '_connection_cache'):
63
64
  # Retrieve and decode connection info from environment variable
64
- conn_info_str = os.environ.get('connectionInfos', '[]')
65
+ conn_info_str = ""
66
+ if name := os.environ.get('EXECUTE_LOG_ID', ''):
67
+ pipe_path = '/tmp/' + name
68
+ try:
69
+ with open(pipe_path, 'r') as f:
70
+ conn_info_str = f.read()
71
+ except FileNotFoundError:
72
+ pass
73
+ # Fall back to environment variable if pipe is not found
74
+ conn_info_str = conn_info_str or os.environ.get('connectionInfos', '[]')
65
75
  if not conn_info_str:
66
- raise DatabaseConnectionError(
67
- "No connection information found in environment variable 'connectionInfos'")
76
+ raise DatabaseConnectionError("No connection information found in env")
68
77
  decoded_info = urllib.parse.unquote(conn_info_str)
69
78
  conn_list = json.loads(decoded_info)
70
79
 
@@ -180,6 +189,18 @@ class DatabaseConnectionManager:
180
189
  self._query.update(query)
181
190
  return self
182
191
 
192
+ def use_host(self, host: str) -> 'DatabaseConnectionManager':
193
+ """
194
+ Set host for the connection.
195
+ Args:
196
+ host (str): Host name
197
+ Returns:
198
+ self: For method chaining
199
+ """
200
+ if host:
201
+ self._host = host
202
+ return self
203
+
183
204
  def build(self, *args, **kwargs) -> Engine:
184
205
  """
185
206
  Create SQLAlchemy engine based on data source name and optional schema
@@ -194,7 +215,8 @@ class DatabaseConnectionManager:
194
215
  ds_type = conn_info.dsType
195
216
  options = conn_info.options or {}
196
217
  schema = self._schema or conn_info.schema
197
- host_parts = conn_info.host.split(':')
218
+ host = self._host or conn_info.host
219
+ host_parts = host.split(':')
198
220
  connect_args = {}
199
221
 
200
222
  # Construct connection URL based on data source type
@@ -291,6 +313,7 @@ def get_active_engine(
291
313
  options: Optional[Dict[str, str]] = None,
292
314
  query: Optional[Dict[str, str]] = None,
293
315
  driver: Optional[str] = None,
316
+ host: Optional[str] = None,
294
317
  *args, **kwargs
295
318
  ) -> Engine:
296
319
  """
@@ -304,6 +327,7 @@ def get_active_engine(
304
327
  options (dict, optional): Additional connection options.
305
328
  query (dict, optional): Additional query parameters for SQLAlchemy url.
306
329
  driver (str, optional): Driver name for the connection.
330
+ host (str, optional): Host name for the connection.
307
331
  *args: Additional arguments for SQLAlchemy engine.
308
332
 
309
333
  Returns:
@@ -323,6 +347,8 @@ def get_active_engine(
323
347
  manager.use_query(query)
324
348
  if driver:
325
349
  manager.use_driver(driver)
350
+ if host:
351
+ manager.use_host(host)
326
352
 
327
353
  return manager.build(*args, **kwargs)
328
354
 
@@ -379,3 +405,8 @@ def get_active_lakehouse_engine(
379
405
  driver=driver,
380
406
  *args, **kwargs
381
407
  )
408
+
409
+ def clean_connection_cache():
410
+ """Clear connection cache before each test"""
411
+ if hasattr(DatabaseConnectionManager, '_connection_cache'):
412
+ delattr(DatabaseConnectionManager, '_connection_cache')
@@ -1 +1 @@
1
- __version__ = "1.0.8"
1
+ __version__ = "1.0.9"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: clickzetta-dbutils
3
- Version: 1.0.8
3
+ Version: 1.0.9
4
4
  Summary: clickzetta dbutils
5
5
  Author-email: "lin.zhang" <lin.zhang@clickzetta.com>
6
6
  Project-URL: documentation, https://www.yunqi.tech/
@@ -0,0 +1,7 @@
1
+ clickzetta_dbutils/__init__.py,sha256=XSofC7BRKAZbgXkil1HFUiHZztzWWyHcbKNi5tpOjCk,350
2
+ clickzetta_dbutils/db_utils.py,sha256=swBzlWMbwNRcEQiehXeOoWZGibaOkm-JO4pRZdAZxgM,13756
3
+ clickzetta_dbutils/version.py,sha256=lFohcdMk8DViWSfrTasSRt9RPcMXfTvmskn8IZQNlws,21
4
+ clickzetta_dbutils-1.0.9.dist-info/METADATA,sha256=wCpqpipf2S5eaHf0RVEI5CzGUGqZXe6k4N4Ya5AyT48,852
5
+ clickzetta_dbutils-1.0.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
6
+ clickzetta_dbutils-1.0.9.dist-info/top_level.txt,sha256=8o5KqMSg9pxnPNejHjMaqZV2vEDvwvsz2GdChZI0N6I,19
7
+ clickzetta_dbutils-1.0.9.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- clickzetta_dbutils/__init__.py,sha256=XSofC7BRKAZbgXkil1HFUiHZztzWWyHcbKNi5tpOjCk,350
2
- clickzetta_dbutils/db_utils.py,sha256=AHtyOD-Kk980CtPg6mKIRhW1M7gG9j68-Y7TBJvgF0Q,12681
3
- clickzetta_dbutils/version.py,sha256=p_ws-9W7HeP_RfNuGscH3UIczaDFgLeGOeDgRBhdzrc,21
4
- clickzetta_dbutils-1.0.8.dist-info/METADATA,sha256=_sO2JXZFTe5AFT0cPa2Uuqz_v-mlRo0qDay1MZ0IOPs,852
5
- clickzetta_dbutils-1.0.8.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
6
- clickzetta_dbutils-1.0.8.dist-info/top_level.txt,sha256=8o5KqMSg9pxnPNejHjMaqZV2vEDvwvsz2GdChZI0N6I,19
7
- clickzetta_dbutils-1.0.8.dist-info/RECORD,,