odps_data.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import requests
  2. import json
  3. import datetime
  4. from odps import ODPS
  5. # ODPS服务配置
  6. ODPS_CONFIG = {
  7. 'ENDPOINT': 'http://service.cn.maxcompute.aliyun.com/api',
  8. 'ACCESSID': 'LTAIWYUujJAm7CbH',
  9. 'ACCESSKEY': 'RfSjdiWwED1sGFlsjXv0DlfTnZTG1P',
  10. }
  11. class OdpsDataCount:
  12. @classmethod
  13. def get_data_count(cls, project, table, dt, url, name, channel_id):
  14. odps = ODPS(
  15. access_id=ODPS_CONFIG['ACCESSID'],
  16. secret_access_key=ODPS_CONFIG['ACCESSKEY'],
  17. project=project,
  18. endpoint=ODPS_CONFIG['ENDPOINT']
  19. )
  20. try:
  21. sql = f'SELECT targetcnt FROM {project}.{table} WHERE dt = "{dt}" and user = "{url}" and name = "{name}" and channel = "{channel_id}"'
  22. with odps.execute_sql(sql).open_reader() as reader:
  23. row = next(reader)
  24. data_value = row['targetcnt'] if row else None
  25. except Exception as e:
  26. print(f"An error occurred: {e}")
  27. return None
  28. return data_value
  29. @classmethod
  30. def main(cls, channel_id, name, url):
  31. # url ='3xcvnyxrngrpwem'
  32. # channel_id = '快手'
  33. dt = datetime.datetime.now().strftime('%Y%m%d')
  34. project = 'loghubods'
  35. table = 'spider_supply_targetcnt'
  36. data_count = cls.get_data_count(project=project, table=table, dt=dt, url=url, name=name, channel_id=channel_id)
  37. return data_count
  38. if __name__ == '__main__':
  39. OdpsDataCount.main()