This commit is contained in:
ZhuJW
2026-07-10 18:55:55 +08:00
commit fce40c7d6c
317 changed files with 170079 additions and 0 deletions
+132
View File
@@ -0,0 +1,132 @@
import traceback
import tdlc_connector
from tdlc_connector import constants
def query_tencent_cloud_data(config,start_time,end_time,vin):
try:
# 配置参数(替换为您的实际参数)
# config = {
# 'region': 'ap-shanghai', # 引擎所在地域
# 'secret_id': 'AKIDtfFdqqgYUflgdZaPFvOfkDd0EGEUkx0u',
# 'secret_key': 'sBKH5WrESUJwLdljV6Yrysc9TaTAh3Gk',
# 'engine': 'gen6_prod_aiag', # 引擎名称
# "database":"dws"
# }
# 建立连接
conn = tdlc_connector.connect(
**config,
engine_type=constants.EngineType.SPARK,
result_style=constants.ResultStyles.LIST
)
cursor = conn.cursor()
# 执行查询
sql = f"""
SELECT * FROM gen6_incidents
WHERE incident_time BETWEEN '{start_time}' AND '{end_time}'
AND oneid = '{vin}'
"""
print(f"执行SQL: {sql}")
cursor.execute(sql)
# 获取列名
columns = [desc[0] for desc in cursor.description] # 使用cursor.description获取列名 [[5]]
# 获取结果
results = cursor.fetchall()
print(f"查询结果共 {len(results)} 条:")
# 将结果转换为字典列表格式
dict_results = []
for i, row in enumerate(results, 1):
# 将每一行转换为字典,键为列名,值为对应的值
row_dict = dict(zip(columns, row))
dict_results.append(row_dict)
print(f"{i}行: {row_dict}")
return dict_results
except Exception as e:
print(f"查询失败: {str(e)}")
raise
finally:
# 确保关闭连接
if 'cursor' in locals():
cursor.close()
if 'conn' in locals():
conn.close()
def sync_query_tencent_cloud_data(config, sql, params, result_queue, task_id):
"""
同步查询腾讯云TDLC数据(兼容单/多线程)
:param config: TDLC连接配置
:param sql: 含%s占位符的SQL语句
:param params: SQL参数列表(用于替换%s
:param result_queue: 线程安全的结果队列(单线程传None)
:param task_id: 任务ID(区分不同查询,单线程可传任意字符串)
"""
conn = None
cursor = None
try:
# (原连接/执行SQL逻辑完全不变)
conn = tdlc_connector.connect(
**config,
engine_type=constants.EngineType.SPARK,
result_style=constants.ResultStyles.LIST
)
cursor = conn.cursor()
# print(f"[线程-{task_id}] 执行SQL: {sql} | 参数: {params}")
cursor.execute(sql, params)
columns = [desc[0] for desc in cursor.description] if cursor.description else []
results = cursor.fetchall()
dict_results = [dict(zip(columns, row)) for row in results]
# ===== 仅新增:判断队列是否为空,兼容单线程 =====
if result_queue is not None:
# 多线程:结果入队
result_queue.put({
"task_id": task_id,
"success": True,
"data": dict_results,
"error": None
})
else:
# 单线程:直接返回结果(新增返回逻辑)
return {
"success": True,
"data": dict_results,
"error": None
}
except Exception as e:
error_info = f"{str(e)}\n{traceback.format_exc()}"
print(f"[线程-{task_id}] 查询失败: {error_info}")
# ===== 同样新增:队列空判断 =====
if result_queue is not None:
result_queue.put({
"task_id": task_id,
"success": False,
"data": None,
"error": error_info
})
else:
return {
"success": False,
"data": None,
"error": error_info
}
finally:
# (原关闭连接逻辑完全不变)
if cursor:
try:
cursor.close()
except Exception as e:
print(f"[线程-{task_id}] 关闭游标失败: {str(e)}")
if conn:
try:
conn.close()
except Exception as e:
print(f"[线程-{task_id}] 关闭连接失败: {str(e)}")