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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,19 @@ 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
+ pipe_fd = os.open(pipe_path, os.O_RDONLY)
70
+ with os.fdopen(pipe_fd, 'r') as pipe:
71
+ conn_info_str = pipe.read()
72
+ except FileNotFoundError:
73
+ pass
74
+ # Fall back to environment variable if pipe is not found
75
+ conn_info_str = conn_info_str or os.environ.get('connectionInfos', '[]')
65
76
  if not conn_info_str:
66
- raise DatabaseConnectionError(
67
- "No connection information found in environment variable 'connectionInfos'")
77
+ raise DatabaseConnectionError("No connection information found in env")
68
78
  decoded_info = urllib.parse.unquote(conn_info_str)
69
79
  conn_list = json.loads(decoded_info)
70
80
 
@@ -180,6 +190,18 @@ class DatabaseConnectionManager:
180
190
  self._query.update(query)
181
191
  return self
182
192
 
193
+ def use_host(self, host: str) -> 'DatabaseConnectionManager':
194
+ """
195
+ Set host for the connection.
196
+ Args:
197
+ host (str): Host name
198
+ Returns:
199
+ self: For method chaining
200
+ """
201
+ if host:
202
+ self._host = host
203
+ return self
204
+
183
205
  def build(self, *args, **kwargs) -> Engine:
184
206
  """
185
207
  Create SQLAlchemy engine based on data source name and optional schema
@@ -194,7 +216,8 @@ class DatabaseConnectionManager:
194
216
  ds_type = conn_info.dsType
195
217
  options = conn_info.options or {}
196
218
  schema = self._schema or conn_info.schema
197
- host_parts = conn_info.host.split(':')
219
+ host = self._host or conn_info.host
220
+ host_parts = host.split(':')
198
221
  connect_args = {}
199
222
 
200
223
  # Construct connection URL based on data source type
@@ -291,6 +314,7 @@ def get_active_engine(
291
314
  options: Optional[Dict[str, str]] = None,
292
315
  query: Optional[Dict[str, str]] = None,
293
316
  driver: Optional[str] = None,
317
+ host: Optional[str] = None,
294
318
  *args, **kwargs
295
319
  ) -> Engine:
296
320
  """
@@ -304,6 +328,7 @@ def get_active_engine(
304
328
  options (dict, optional): Additional connection options.
305
329
  query (dict, optional): Additional query parameters for SQLAlchemy url.
306
330
  driver (str, optional): Driver name for the connection.
331
+ host (str, optional): Host name for the connection.
307
332
  *args: Additional arguments for SQLAlchemy engine.
308
333
 
309
334
  Returns:
@@ -323,6 +348,8 @@ def get_active_engine(
323
348
  manager.use_query(query)
324
349
  if driver:
325
350
  manager.use_driver(driver)
351
+ if host:
352
+ manager.use_host(host)
326
353
 
327
354
  return manager.build(*args, **kwargs)
328
355
 
@@ -379,3 +406,8 @@ def get_active_lakehouse_engine(
379
406
  driver=driver,
380
407
  *args, **kwargs
381
408
  )
409
+
410
+ def clean_connection_cache():
411
+ """Clear connection cache before each test"""
412
+ if hasattr(DatabaseConnectionManager, '_connection_cache'):
413
+ delattr(DatabaseConnectionManager, '_connection_cache')
@@ -1 +1 @@
1
- __version__ = "1.0.8"
1
+ __version__ = "1.0.10"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: clickzetta-dbutils
3
- Version: 1.0.8
3
+ Version: 1.0.10
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=Ynn4Gid9uw5WYzRHE_JHTGSdnCaN_JR10Qhv6S18o8U,13827
3
+ clickzetta_dbutils/version.py,sha256=9EozsBnqDzcKWRDTC1DFubagFbm9pw2hazZ5VjU0tys,22
4
+ clickzetta_dbutils-1.0.10.dist-info/METADATA,sha256=li7DGwjltrh3uoUQuP6DZ5qYR3dbCD7rTQ31WCVFaxQ,853
5
+ clickzetta_dbutils-1.0.10.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
6
+ clickzetta_dbutils-1.0.10.dist-info/top_level.txt,sha256=8o5KqMSg9pxnPNejHjMaqZV2vEDvwvsz2GdChZI0N6I,19
7
+ clickzetta_dbutils-1.0.10.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,,