dataops-sdk 0.3.0__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.

Potentially problematic release.


This version of dataops-sdk might be problematic. Click here for more details.

Files changed (79) hide show
  1. dataops_sdk/__init__.py +84 -0
  2. dataops_sdk/constants.py +6 -0
  3. dataops_sdk/exceptions.py +31 -0
  4. dataops_sdk/runner/__init__.py +46 -0
  5. dataops_sdk/runner/datasource_factory.py +83 -0
  6. dataops_sdk/runner/schemas/nacos/__init__.py +5 -0
  7. dataops_sdk/runner/schemas/nacos/config.py +40 -0
  8. dataops_sdk/runner/schemas/nacos/constants.py +235 -0
  9. dataops_sdk/runner/schemas/nacos/instance.py +103 -0
  10. dataops_sdk/runner/schemas/nacos/nacos_exception.py +44 -0
  11. dataops_sdk/runner/schemas/nacos/naming_param.py +62 -0
  12. dataops_sdk/runner/schemas/nacos/naming_request.py +84 -0
  13. dataops_sdk/runner/schemas/nacos/naming_response.py +50 -0
  14. dataops_sdk/runner/schemas/nacos/preserved_metadata_key.py +10 -0
  15. dataops_sdk/runner/schemas/nacos/service.py +119 -0
  16. dataops_sdk/runner/utils/__init__.py +42 -0
  17. dataops_sdk/runner/utils/common.py +209 -0
  18. dataops_sdk/runner/utils/dbConn_base.py +256 -0
  19. dataops_sdk/runner/utils/dbConn_sync.py +485 -0
  20. dataops_sdk/runner/utils/duckdb_manager.py +203 -0
  21. dataops_sdk/runner/utils/file_transfer_base.py +307 -0
  22. dataops_sdk/runner/utils/ftp_file_transfer.py +242 -0
  23. dataops_sdk/runner/utils/log.py +50 -0
  24. dataops_sdk/runner/utils/nacos.py +96 -0
  25. dataops_sdk/runner/utils/neo4j_sync.py +236 -0
  26. dataops_sdk/runner/utils/queue_base.py +224 -0
  27. dataops_sdk/runner/utils/queue_kafka.py +150 -0
  28. dataops_sdk/runner/utils/sftp_file_transfer.py +243 -0
  29. dataops_sdk/schemas/__init__.py +32 -0
  30. dataops_sdk/schemas/alarm.py +38 -0
  31. dataops_sdk/schemas/api.py +37 -0
  32. dataops_sdk/schemas/data_table.py +437 -0
  33. dataops_sdk/schemas/datasource.py +26 -0
  34. dataops_sdk/schemas/dict_.py +13 -0
  35. dataops_sdk/schemas/enums.py +120 -0
  36. dataops_sdk/schemas/group.py +40 -0
  37. dataops_sdk/schemas/hazard.py +151 -0
  38. dataops_sdk/schemas/meta.py +175 -0
  39. dataops_sdk/schemas/query.py +175 -0
  40. dataops_sdk/schemas/report.py +22 -0
  41. dataops_sdk/schemas/skill.py +70 -0
  42. dataops_sdk/schemas/table.py +65 -0
  43. dataops_sdk/schemas/user.py +52 -0
  44. dataops_sdk/schemas/widget.py +651 -0
  45. dataops_sdk/schemas/workflow.py +63 -0
  46. dataops_sdk/services/__init__.py +110 -0
  47. dataops_sdk/services/alarm.py +324 -0
  48. dataops_sdk/services/api.py +28 -0
  49. dataops_sdk/services/auth.py +120 -0
  50. dataops_sdk/services/data_table.py +485 -0
  51. dataops_sdk/services/dataset.py +127 -0
  52. dataops_sdk/services/datasource.py +57 -0
  53. dataops_sdk/services/dict_.py +69 -0
  54. dataops_sdk/services/hazard.py +260 -0
  55. dataops_sdk/services/meta.py +523 -0
  56. dataops_sdk/services/metrics.py +42 -0
  57. dataops_sdk/services/ref.py +66 -0
  58. dataops_sdk/services/report.py +36 -0
  59. dataops_sdk/services/skill.py +276 -0
  60. dataops_sdk/services/table.py +340 -0
  61. dataops_sdk/services/widget.py +143 -0
  62. dataops_sdk/services/workflow.py +102 -0
  63. dataops_sdk/session.py +292 -0
  64. dataops_sdk/tiptap/__init__.py +30 -0
  65. dataops_sdk/tiptap/builder.py +75 -0
  66. dataops_sdk/tiptap/constants.py +133 -0
  67. dataops_sdk/tiptap/markdown_parser.py +294 -0
  68. dataops_sdk/tiptap/models.py +43 -0
  69. dataops_sdk/tiptap/parse_utils.py +889 -0
  70. dataops_sdk/tiptap/render_utils.py +846 -0
  71. dataops_sdk/tiptap/renderers.py +51 -0
  72. dataops_sdk/tiptap/tool.py +629 -0
  73. dataops_sdk/utils/__init__.py +15 -0
  74. dataops_sdk/utils/common.py +211 -0
  75. dataops_sdk/utils/utils.py +120 -0
  76. dataops_sdk-0.3.0.dist-info/METADATA +25 -0
  77. dataops_sdk-0.3.0.dist-info/RECORD +79 -0
  78. dataops_sdk-0.3.0.dist-info/WHEEL +5 -0
  79. dataops_sdk-0.3.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,256 @@
1
+ """
2
+ 数据库连接基类模块。
3
+
4
+ 提供统一的数据库连接接口,支持 MySQL、PostgreSQL、DM、Oracle 等多种数据库。
5
+ 使用 SQLAlchemy 作为底层数据库抽象层,通过抽象基类定义统一的数据库操作规范。
6
+
7
+ Example:
8
+ >>> class MySQLConn(DatabaseConnBase[MySQLConnection]):
9
+ ... def post_init(self) -> MySQLConnection:
10
+ ... engine = create_engine(self._url, echo=self._log_sql)
11
+ ... return engine.connect()
12
+ ...
13
+ >>> with MySQLConn(task_id="task1", host="localhost", port=3306,
14
+ ... user="root", password="pass", db="test") as conn:
15
+ ... result = conn.select("SELECT * FROM users WHERE id = %s", (1,))
16
+ ... conn.execute("INSERT INTO users (name) VALUES (%s)", ("Alice",))
17
+ """
18
+
19
+ from abc import ABC, abstractmethod
20
+ from logging import Logger
21
+ from typing import Any
22
+
23
+ from .log import getLogger
24
+
25
+
26
+ class DatabaseConnBase(ABC):
27
+ """
28
+ 数据库连接抽象基类。
29
+
30
+ 定义数据库连接的标准接口,包括执行 SQL、批量操作、查询和关闭连接等方法。
31
+ 使用泛型参数 C 表示具体数据库连接对象的类型(如 MySQLConnection、psycopg 连接等)。
32
+
33
+ 继承此类需要实现以下抽象方法:
34
+ - post_init: 初始化具体连接对象
35
+ - executemany: 执行批量 SQL
36
+ - execute: 执行单条 SQL
37
+ - select: 查询数据
38
+ - close: 关闭连接
39
+
40
+ 可以作为上下文管理器使用,会自动在退出时关闭连接。
41
+
42
+ Type Parameters:
43
+ C: 具体数据库连接对象的类型。
44
+
45
+ Attributes:
46
+ logger: 日志记录器,用于记录数据库操作日志。
47
+
48
+ Example:
49
+ >>> class MyDBConn(DatabaseConnBase[Any]):
50
+ ... def post_init(self) -> Any:
51
+ ... return object() # 返回实际连接对象
52
+ ... # ... 实现其他抽象方法
53
+ ...
54
+ >>> with MyDBConn(host="localhost", port=5432,
55
+ ... user="user", password="pass", db="test") as conn:
56
+ ... conn.execute("CREATE TABLE test (id INT)")
57
+ ... conn.executemany("INSERT INTO test VALUES (%s)", [(1,), (2,)])
58
+ ... rows = conn.select("SELECT * FROM test")
59
+ """
60
+
61
+ def __init__(
62
+ self,
63
+ host: str,
64
+ port: int | str,
65
+ user: str,
66
+ password: str,
67
+ db: str,
68
+ db_type: str | None = "mysql",
69
+ log_sql: bool | None = None,
70
+ name: str | None = None,
71
+ ):
72
+ """
73
+ 初始化数据库连接基类。
74
+
75
+ 将传入的连接参数保存为实例属性,并初始化日志记录器。
76
+ 子类应在 post_init 方法中创建实际的数据库连接。
77
+
78
+ Args:
79
+ task_id: 任务 ID,用于日志记录标识。
80
+ host: 数据库服务器主机地址。
81
+ port: 数据库服务器端口号,会被转换为整数。
82
+ user: 数据库用户名。
83
+ password: 数据库密码。
84
+ db: 数据库名称。
85
+ db_type: 数据库类型,默认为 "mysql"。
86
+ log_sql: 是否记录 SQL 语句日志,为 None 时使用实例级默认行为。
87
+ """
88
+ # 确保端口始终为整数类型
89
+ port = int(port)
90
+
91
+ # 保存数据库连接参数
92
+ self._host = host
93
+ self._port = int(port) # 再次转换确保类型一致
94
+ self._user = user
95
+ self._password = password
96
+ self._db = db
97
+ self._db_type = db_type or "mysql"
98
+
99
+ self._name = name or f"{self._db_type}_{self._db}"
100
+
101
+ # log_sql 默认为 False,bool(None) 为 False,故用条件表达式处理
102
+ self._log_sql: bool = bool(log_sql) if log_sql is not None else False
103
+
104
+ # 使用 task_id 作为 logger 名称,便于日志追踪
105
+ self._logger = getLogger(self._name)
106
+
107
+ # 调用子类的初始化方法(钩子模式)
108
+ self.post_init()
109
+
110
+ @abstractmethod
111
+ def post_init(self):
112
+ """
113
+ 初始化具体数据库连接对象。
114
+
115
+ 子类应在此方法中创建并返回实际的数据库连接对象。
116
+ 该方法在 __init__ 中被调用,用于延迟初始化连接。
117
+
118
+ Returns:
119
+ C: 具体类型的数据库连接对象。
120
+ """
121
+ pass
122
+
123
+ @abstractmethod
124
+ def executemany(
125
+ self,
126
+ sql: str,
127
+ datas: list[tuple | list],
128
+ *,
129
+ log_sql: bool | None = None,
130
+ ):
131
+ """
132
+ 执行多条 SQL 语句(批量执行)。
133
+
134
+ 用于批量插入、更新等场景,提高执行效率。
135
+
136
+ Args:
137
+ sql: 待执行的 SQL 语句模板,支持占位符(如 %s、? 等)。
138
+ datas: SQL 语句参数的列表,每一项对应一条 SQL 执行。
139
+ log_sql: 是否打印 SQL 日志,为 None 时使用实例级 self._log_sql。
140
+ """
141
+ pass
142
+
143
+ @abstractmethod
144
+ def execute(
145
+ self,
146
+ sql: str,
147
+ args: tuple | list | dict | None = None,
148
+ *,
149
+ log_sql: bool | None = None,
150
+ ):
151
+ """
152
+ 执行单条 SQL 语句。
153
+
154
+ 可执行 INSERT、UPDATE、DELETE、CREATE 等语句。
155
+ 默认不自动提交,需手动管理事务或配置自动提交。
156
+
157
+ Args:
158
+ sql: 待执行的 SQL 语句(可包含多条语句,用分号分隔)。
159
+ args: SQL 语句参数,支持元组、列表或字典格式。
160
+ log_sql: 是否打印 SQL 日志,为 None 时使用实例级 self._log_sql。
161
+ """
162
+
163
+ @abstractmethod
164
+ def select(
165
+ self,
166
+ sql: str,
167
+ args: tuple | list | dict | None = None,
168
+ size: int | None = None,
169
+ *,
170
+ log_sql: bool | None = None,
171
+ ) -> list[dict[str, Any]]:
172
+ """
173
+ 执行查询语句并返回结果。
174
+
175
+ 用于 SELECT 查询场景,返回查询到的数据行。
176
+
177
+ Args:
178
+ sql: 待执行的查询 SQL 语句。
179
+ args: SQL 语句参数,支持元组、列表或字典格式。
180
+ size: 限制返回的行数,None 表示不限制。
181
+ log_sql: 是否打印 SQL 日志,为 None 时使用实例级 self._log_sql。
182
+ """
183
+ pass
184
+
185
+ @abstractmethod
186
+ def close(self):
187
+ """
188
+ 关闭数据库连接。
189
+
190
+ 释放数据库连接资源,应在不再需要连接时调用。
191
+ 支持多次调用,子类应实现幂等性。
192
+ """
193
+ pass
194
+
195
+ @property
196
+ def name(self) -> str:
197
+ """
198
+ 数据库连接名称属性。
199
+
200
+ 返回连接的名称,用于标识连接。
201
+
202
+ Returns:
203
+ str: 数据库连接名称。
204
+ """
205
+ return self._name
206
+
207
+ @property
208
+ def logger(self) -> Logger:
209
+ """
210
+ 日志记录器属性。
211
+
212
+ 提供对内部日志记录器的只读访问,用于记录数据库操作日志。
213
+
214
+ Returns:
215
+ Logger: Python logging 模块的日志记录器实例。
216
+ """
217
+ return self._logger
218
+
219
+ def __enter__(self):
220
+ """
221
+ 上下文管理器入口方法。
222
+
223
+ 使 DatabaseConnBase 的子类可以作为 with 语句使用。
224
+ 进入 with 块时返回 self 引用。
225
+
226
+ Returns:
227
+ self: 返回当前实例的引用。
228
+ """
229
+ return self
230
+
231
+ def __exit__(self, exc_type, exc_val, exc_tb):
232
+ """
233
+ 上下文管理器退出方法。
234
+
235
+ 退出 with 块时自动调用,异常会被记录后关闭连接。
236
+ 确保数据库连接被正确关闭。
237
+
238
+ Args:
239
+ exc_type: 异常类型,若无异常则为 None。
240
+ exc_val: 异常值/实例,若无异常则为 None。
241
+ exc_tb: 异常回溯对象,若无异常则为 None。
242
+ """
243
+ # 如果有异常,记录异常日志
244
+ if exc_type:
245
+ self._logger.exception(exc_val)
246
+ # 无论是否异常都关闭连接
247
+ self.close()
248
+
249
+ def __del__(self):
250
+ """
251
+ 析构函数。
252
+
253
+ 当对象被垃圾回收时自动调用,确保连接被关闭。
254
+ 这是一个安全网机制,不能替代显式调用 close()。
255
+ """
256
+ self.close()