lesscode-flask 0.1.73__tar.gz → 0.1.75__tar.gz
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.
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/PKG-INFO +1 -1
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/__init__.py +1 -1
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/db/__init__.py +26 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/db/executor.py +10 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/helpers.py +4 -3
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask.egg-info/PKG-INFO +1 -1
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/query_runner/clickhouse.py +20 -3
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/README.md +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/app.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/db/datasource.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/export_data/__init__.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/export_data/data_download_handler.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/log/access_log_handler.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/model/access_log.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/model/base_model.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/model/parameterized_query.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/model/resource_param_template.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/model/response_result.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/model/user.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/service/access_log_service.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/service/base_service.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/service/resource_param_template_service.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/setting/__init__.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/setup/__init__.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/signals.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/static/swagger.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/decorator/__init__.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/decorator/cache.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/decorator/swagger.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/dify_utils.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/file/file_exporter.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/file/file_utils.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/json/NotSortJSONProvider.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/oss/__init__.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/oss/ks3_oss.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/redis/redis_helper.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/request/request.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/swagger/swagger_template.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/swagger/swagger_util.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/task/__init__.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/task/task_helper.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/thread/thread_utils.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/wsgi.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask.egg-info/SOURCES.txt +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask.egg-info/dependency_links.txt +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask.egg-info/requires.txt +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask.egg-info/top_level.txt +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/query_runner/__init__.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/query_runner/elasticsearch.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/query_runner/kingbase.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/query_runner/mysql.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/query_runner/pg.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/settings/__init__.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/settings/helpers.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/utils/__init__.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/redash/utils/requests_session.py +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/setup.cfg +0 -0
- {lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/setup.py +0 -0
|
@@ -34,6 +34,32 @@ def execute_query(
|
|
|
34
34
|
raise e
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
def execute(query_text, parameters, query_runner, should_apply_auto_limit=True):
|
|
38
|
+
"""
|
|
39
|
+
执行原生sql操作
|
|
40
|
+
:param query_text: 待执行语句
|
|
41
|
+
:param parameters: 查询参数数
|
|
42
|
+
:param query_runner: 查询执行器
|
|
43
|
+
:param should_apply_auto_limit:
|
|
44
|
+
:return:
|
|
45
|
+
"""
|
|
46
|
+
try:
|
|
47
|
+
query = ParameterizedQuery(query_text)
|
|
48
|
+
if parameters is None:
|
|
49
|
+
parameters = {}
|
|
50
|
+
query.apply(parameters)
|
|
51
|
+
query_text = query.query
|
|
52
|
+
# query_text = query_runner.apply_auto_limit(query.text, should_apply_auto_limit)
|
|
53
|
+
logging.info("query_text:{}".format(query_text))
|
|
54
|
+
return QueryExecutor(
|
|
55
|
+
query_text,
|
|
56
|
+
query_runner
|
|
57
|
+
).exec()
|
|
58
|
+
except Exception as e:
|
|
59
|
+
# models.db.session.rollback()
|
|
60
|
+
raise e
|
|
61
|
+
|
|
62
|
+
|
|
37
63
|
# from flask_sqlalchemy import SQLAlchemy
|
|
38
64
|
try:
|
|
39
65
|
flask_sqlalchemy = import_module("flask_sqlalchemy")
|
|
@@ -45,6 +45,16 @@ class QueryExecutor:
|
|
|
45
45
|
raise QueryExecutionError(error)
|
|
46
46
|
return data
|
|
47
47
|
|
|
48
|
+
def exec(self):
|
|
49
|
+
self._log_progress("executing_query")
|
|
50
|
+
|
|
51
|
+
annotated_query = self._annotate_query(self.query_runner)
|
|
52
|
+
|
|
53
|
+
data, error = self.query_runner.exec(annotated_query, self.user)
|
|
54
|
+
if error:
|
|
55
|
+
raise QueryExecutionError(error)
|
|
56
|
+
return data
|
|
57
|
+
|
|
48
58
|
#
|
|
49
59
|
# logger.info(
|
|
50
60
|
# "job=execute_query query_hash=%s ds_id=%d data_length=%s error=[%s]",
|
|
@@ -42,14 +42,15 @@ def result_to_dict(result):
|
|
|
42
42
|
return result
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
def build_tree(data, parent: str = "parent_id"):
|
|
45
|
+
def build_tree(data, parent: str = "parent_id", pk: str = "id"):
|
|
46
46
|
"""
|
|
47
47
|
构建树形结构数据。
|
|
48
48
|
根据给定的数据列表和父节点标识,将平面数据结构转换为树形结构。
|
|
49
49
|
|
|
50
50
|
参数:
|
|
51
51
|
- data: 平面数据列表,每个元素包含一个节点及其父节点ID。
|
|
52
|
-
- parent:
|
|
52
|
+
- parent: 父级字段名字符串,默认为"parent_id",用于查找父节点。
|
|
53
|
+
- pk: 主键字段名字符串,默认为"id",用于标识父节点。
|
|
53
54
|
|
|
54
55
|
返回:
|
|
55
56
|
- tree: 转换后的树形结构数据列表。
|
|
@@ -60,7 +61,7 @@ def build_tree(data, parent: str = "parent_id"):
|
|
|
60
61
|
# 为数据增加一个_sort_key属性用于排序
|
|
61
62
|
for item in data:
|
|
62
63
|
item['_sort_key'] = _sort_key
|
|
63
|
-
node_map[item[
|
|
64
|
+
node_map[item[pk]] = item
|
|
64
65
|
_sort_key += 1
|
|
65
66
|
# 初始化根节点列表
|
|
66
67
|
tree_data = []
|
|
@@ -122,10 +122,10 @@ class ClickHouse(BaseSQLQueryRunner):
|
|
|
122
122
|
)
|
|
123
123
|
if r.status_code != 200:
|
|
124
124
|
raise Exception(r.text)
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
try:
|
|
126
|
+
return r.json()
|
|
127
|
+
except requests.exceptions.JSONDecodeError as e:
|
|
127
128
|
return r.text
|
|
128
|
-
return r.json()
|
|
129
129
|
except requests.RequestException as e:
|
|
130
130
|
if e.response:
|
|
131
131
|
details = "({}, Status Code: {})".format(
|
|
@@ -219,5 +219,22 @@ class ClickHouse(BaseSQLQueryRunner):
|
|
|
219
219
|
error = e
|
|
220
220
|
return data, error
|
|
221
221
|
|
|
222
|
+
def exec(self, query, user):
|
|
223
|
+
logger.debug("Clickhouse is about to execute query: %s", query)
|
|
224
|
+
if query == "":
|
|
225
|
+
json_data = None
|
|
226
|
+
error = "Query is empty"
|
|
227
|
+
return json_data, error
|
|
228
|
+
try:
|
|
229
|
+
|
|
230
|
+
# data = json_dumps(q)
|
|
231
|
+
data = self._send_query(query)
|
|
232
|
+
error = None
|
|
233
|
+
except Exception as e:
|
|
234
|
+
data = None
|
|
235
|
+
logging.exception(e)
|
|
236
|
+
error = e
|
|
237
|
+
return data, error
|
|
238
|
+
|
|
222
239
|
|
|
223
240
|
register(ClickHouse)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/export_data/data_download_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/model/resource_param_template.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/service/access_log_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/json/NotSortJSONProvider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/swagger/swagger_template.py
RENAMED
|
File without changes
|
{lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask/utils/swagger/swagger_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lesscode-flask-0.1.73 → lesscode-flask-0.1.75}/lesscode_flask.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|