test.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from odps import ODPS
  2. from odps.errors import ODPSError
  3. def get_odps_data(sql):
  4. # 配置信息
  5. access_id = 'LTAI9EBa0bd5PrDa'
  6. access_key = 'vAalxds7YxhfOA2yVv8GziCg3Y87v5'
  7. project = 'loghubods'
  8. endpoint = 'http://service.odps.aliyun.com/api'
  9. # 1. 初始化 ODPS 入口
  10. o = ODPS(access_id, access_key, project, endpoint=endpoint)
  11. try:
  12. # 2. 执行 SQL 并获取结果
  13. # execute_sql 会等待任务完成,使用 open_reader 读取数据
  14. with o.execute_sql(sql).open_reader() as reader:
  15. # reader 类似于 Java 中的 List<Record>
  16. # 我们可以直接将其转换为 Python 的 list
  17. records = [record for record in reader]
  18. return records
  19. except ODPSError as e:
  20. print(f"ODPS 错误: {e}")
  21. return None
  22. def get_data():
  23. sql = '''
  24. SELECT type
  25. ,channel
  26. ,vid
  27. ,cate1
  28. ,cate2
  29. ,title
  30. ,url1
  31. ,url2
  32. ,SUBSTR(decode_result,1,20) AS decode_result
  33. ,is_new
  34. ,extend
  35. ,dt
  36. FROM loghubods.dwd_topic_decode_result_di
  37. WHERE dt = '20260415'
  38. limit 1;
  39. '''
  40. data = get_odps_data(sql)
  41. if data:
  42. for r in data:
  43. print(r[0],r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11])
  44. if __name__ == '__main__':
  45. get_data()