clickzetta-dbutils 1.0.7__py3-none-any.whl → 1.0.8__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- clickzetta_dbutils/__init__.py +2 -2
- clickzetta_dbutils/db_utils.py +60 -5
- clickzetta_dbutils/version.py +1 -1
- {clickzetta_dbutils-1.0.7.dist-info → clickzetta_dbutils-1.0.8.dist-info}/METADATA +1 -1
- clickzetta_dbutils-1.0.8.dist-info/RECORD +7 -0
- clickzetta_dbutils-1.0.7.dist-info/RECORD +0 -7
- {clickzetta_dbutils-1.0.7.dist-info → clickzetta_dbutils-1.0.8.dist-info}/WHEEL +0 -0
- {clickzetta_dbutils-1.0.7.dist-info → clickzetta_dbutils-1.0.8.dist-info}/top_level.txt +0 -0
clickzetta_dbutils/__init__.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
from .db_utils import get_active_engine, get_lakehouse_connection, DatabaseConnectionManager, ConnectionConfig, \
|
2
|
-
DatabaseConnectionError
|
2
|
+
DatabaseConnectionError, get_active_lakehouse_engine
|
3
3
|
|
4
|
-
__all__ = ["get_active_engine", "get_lakehouse_connection", "DatabaseConnectionManager", "ConnectionConfig",
|
4
|
+
__all__ = ["get_active_engine", "get_lakehouse_connection", "get_active_lakehouse_engine", "DatabaseConnectionManager", "ConnectionConfig",
|
5
5
|
"DatabaseConnectionError"]
|
clickzetta_dbutils/db_utils.py
CHANGED
@@ -38,7 +38,7 @@ class DatabaseConnectionManager:
|
|
38
38
|
Manages database connections with flexible configuration options.
|
39
39
|
"""
|
40
40
|
|
41
|
-
def __init__(self, ds_name: str):
|
41
|
+
def __init__(self, ds_name: Optional[str] = None):
|
42
42
|
"""
|
43
43
|
Initialize a database connection for a specific data source.
|
44
44
|
"""
|
@@ -52,7 +52,7 @@ class DatabaseConnectionManager:
|
|
52
52
|
self._query: Dict[str, str] = {}
|
53
53
|
|
54
54
|
@classmethod
|
55
|
-
def
|
55
|
+
def load_connection_configs(cls) -> Dict[str, ConnectionConfig]:
|
56
56
|
"""
|
57
57
|
Load and cache connection configurations from environment variables.
|
58
58
|
|
@@ -83,7 +83,7 @@ class DatabaseConnectionManager:
|
|
83
83
|
"""
|
84
84
|
Find connection info by data source name
|
85
85
|
"""
|
86
|
-
connections = self.
|
86
|
+
connections = self.load_connection_configs()
|
87
87
|
|
88
88
|
# Validate data source exists
|
89
89
|
if ds_name not in connections:
|
@@ -95,11 +95,12 @@ class DatabaseConnectionManager:
|
|
95
95
|
config.query.update(self._query)
|
96
96
|
return config
|
97
97
|
|
98
|
-
|
98
|
+
@classmethod
|
99
|
+
def get_connection_infos(cls) -> Dict[str, ConnectionConfig]:
|
99
100
|
"""
|
100
101
|
Get all connection infos
|
101
102
|
"""
|
102
|
-
return
|
103
|
+
return DatabaseConnectionManager.load_connection_configs()
|
103
104
|
|
104
105
|
def use_workspace(self, workspace: str) -> 'DatabaseConnectionManager':
|
105
106
|
"""
|
@@ -324,3 +325,57 @@ def get_active_engine(
|
|
324
325
|
manager.use_driver(driver)
|
325
326
|
|
326
327
|
return manager.build(*args, **kwargs)
|
328
|
+
|
329
|
+
|
330
|
+
def get_active_lakehouse_engine(
|
331
|
+
vcluster: Optional[str] = None,
|
332
|
+
workspace: Optional[str] = None,
|
333
|
+
schema: Optional[str] = None,
|
334
|
+
options: Optional[Dict[str, str]] = None,
|
335
|
+
query: Optional[Dict[str, str]] = None,
|
336
|
+
driver: Optional[str] = None,
|
337
|
+
*args, **kwargs
|
338
|
+
) -> Engine:
|
339
|
+
"""
|
340
|
+
Convenience function to create a database engine for lakehouse (ClickZetta) data source.
|
341
|
+
|
342
|
+
Args:
|
343
|
+
vcluster (str, optional): Virtual cluster name for ClickZetta data source. Required.
|
344
|
+
workspace (str, optional): Workspace name. Default is 'default'.
|
345
|
+
schema (str, optional): Schema name for the connection. Default is 'public'.
|
346
|
+
options (dict, optional): Additional connection options.
|
347
|
+
query (dict, optional): Additional query parameters for SQLAlchemy url.
|
348
|
+
driver (str, optional): Driver name for the connection.
|
349
|
+
*args: Additional arguments for SQLAlchemy engine.
|
350
|
+
**kwargs: Additional keyword arguments for SQLAlchemy engine.
|
351
|
+
|
352
|
+
Returns:
|
353
|
+
SQLAlchemy Engine instance
|
354
|
+
|
355
|
+
Raises:
|
356
|
+
DatabaseConnectionError: If no lakehouse data source is found in the configuration.
|
357
|
+
"""
|
358
|
+
# Get all connection configurations
|
359
|
+
conn_infos = DatabaseConnectionManager.get_connection_infos()
|
360
|
+
|
361
|
+
# Find the lakehouse (ClickZetta) data source
|
362
|
+
lakehouse_ds = None
|
363
|
+
for ds_name, conn_info in conn_infos.items():
|
364
|
+
if conn_info.dsType == 1: # ClickZetta type
|
365
|
+
lakehouse_ds = ds_name
|
366
|
+
break
|
367
|
+
|
368
|
+
if not lakehouse_ds:
|
369
|
+
raise DatabaseConnectionError("No lakehouse (ClickZetta) data source found in configuration")
|
370
|
+
|
371
|
+
# Create engine using the found lakehouse data source
|
372
|
+
return get_active_engine(
|
373
|
+
ds_name=lakehouse_ds,
|
374
|
+
vcluster=vcluster,
|
375
|
+
workspace=workspace,
|
376
|
+
schema=schema,
|
377
|
+
options=options,
|
378
|
+
query=query,
|
379
|
+
driver=driver,
|
380
|
+
*args, **kwargs
|
381
|
+
)
|
clickzetta_dbutils/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "1.0.
|
1
|
+
__version__ = "1.0.8"
|
@@ -0,0 +1,7 @@
|
|
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,,
|
@@ -1,7 +0,0 @@
|
|
1
|
-
clickzetta_dbutils/__init__.py,sha256=Q_6kas0RvZ0767qlaA_xGESmXxm0dks1YQ8DqCX8LV0,290
|
2
|
-
clickzetta_dbutils/db_utils.py,sha256=Vv00OcjoBZdC8z1ucEtekEwqPhu95GkgazBdoRBd-bI,10643
|
3
|
-
clickzetta_dbutils/version.py,sha256=98rTj2jvgnCZhTIeHpbml7e2xuhIqt_9BJNSWkWEQb8,21
|
4
|
-
clickzetta_dbutils-1.0.7.dist-info/METADATA,sha256=IPehhi4jMgaS7VZfqMhSwTkYkAbnLXHKf708o4537jo,852
|
5
|
-
clickzetta_dbutils-1.0.7.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
6
|
-
clickzetta_dbutils-1.0.7.dist-info/top_level.txt,sha256=8o5KqMSg9pxnPNejHjMaqZV2vEDvwvsz2GdChZI0N6I,19
|
7
|
-
clickzetta_dbutils-1.0.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|