minute_data.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import datetime
  2. import logging
  3. import os
  4. import pandas as pd
  5. import sys
  6. from sqlalchemy import create_engine
  7. # 更新为第三方数据源
  8. engine = create_engine('mysql+pymysql://root:admin123456@192.168.50.235:30306/appoint')
  9. base_dir = r'/data/logs/104'
  10. save_dir = base_dir + os.sep + 'minute'
  11. log_dir = base_dir + os.sep + 'logs' + os.sep + 'minute'
  12. wind_farm_code_dict = {
  13. '风场编号1': '山西风场',
  14. '风场编号2': '桂林风场'
  15. }
  16. def create_dir(save_dir, is_file=False):
  17. if is_file:
  18. save_dir = os.path.dirname(save_dir)
  19. os.makedirs(save_dir, exist_ok=True)
  20. def init_log():
  21. logger = logging.getLogger("104data")
  22. logger.setLevel(logging.INFO)
  23. stout_handle = logging.StreamHandler(sys.stdout)
  24. stout_handle.setFormatter(
  25. logging.Formatter("%(asctime)s: %(message)s"))
  26. stout_handle.setLevel(logging.INFO)
  27. logger.addHandler(stout_handle)
  28. create_dir(log_dir)
  29. file_name = log_dir + os.sep + datetime.datetime.now().strftime('%Y%m') + '-info.log'
  30. file_handler = logging.FileHandler(file_name, encoding='utf-8')
  31. file_handler.setFormatter(
  32. logging.Formatter("%(asctime)s: %(message)s"))
  33. file_handler.setLevel(logging.INFO)
  34. logger.addHandler(file_handler)
  35. file_name = log_dir + os.sep + datetime.datetime.now().strftime('%Y%m') + '-error.log'
  36. file_handler = logging.FileHandler(file_name, encoding='utf-8')
  37. file_handler.setFormatter(
  38. logging.Formatter("%(asctime)s: %(message)s"))
  39. file_handler.setLevel(logging.ERROR)
  40. logger.addHandler(file_handler)
  41. return logger
  42. logger = init_log()
  43. def info_print(*kwargs):
  44. message = " ".join([str(i) for i in kwargs])
  45. logger.info(message)
  46. def error_print(*kwargs):
  47. message = " ".join([str(i) for i in kwargs])
  48. logger.error(message)
  49. def get_data_and_save_file(df_sql, save_path):
  50. info_print(df_sql)
  51. df = pd.read_sql_query(df_sql, engine)
  52. info_print(df.shape)
  53. if __name__ == '__main__':
  54. info_print("开始执行")
  55. begin = datetime.datetime.now()
  56. yestoday = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y%m%d')
  57. yestoday_sql = f"select * from information_schema.TABLES where TABLE_NAME = {yestoday}"
  58. get_data_and_save_file(yestoday_sql,
  59. os.path.join(save_dir, wind_farm_code_dict['风场编号1'], yestoday[0:4], yestoday[0:6],
  60. f'{yestoday}.csv.gz'))
  61. info_print("执行结束,总耗时:", datetime.datetime.now() - begin)