import datetime import logging import os import pandas as pd import sys from sqlalchemy import create_engine # 更新为第三方数据源 engine = create_engine('mysql+pymysql://root:admin123456@192.168.50.235:30306/appoint') base_dir = r'/data/logs/104' save_dir = base_dir + os.sep + 'minute' log_dir = base_dir + os.sep + 'logs' + os.sep + 'minute' wind_farm_code_dict = { '风场编号1': '山西风场', '风场编号2': '桂林风场' } def create_dir(save_dir, is_file=False): if is_file: save_dir = os.path.dirname(save_dir) os.makedirs(save_dir, exist_ok=True) def init_log(): logger = logging.getLogger("104data") logger.setLevel(logging.INFO) stout_handle = logging.StreamHandler(sys.stdout) stout_handle.setFormatter( logging.Formatter("%(asctime)s: %(message)s")) stout_handle.setLevel(logging.INFO) logger.addHandler(stout_handle) create_dir(log_dir) file_name = log_dir + os.sep + datetime.datetime.now().strftime('%Y%m') + '-info.log' file_handler = logging.FileHandler(file_name, encoding='utf-8') file_handler.setFormatter( logging.Formatter("%(asctime)s: %(message)s")) file_handler.setLevel(logging.INFO) logger.addHandler(file_handler) file_name = log_dir + os.sep + datetime.datetime.now().strftime('%Y%m') + '-error.log' file_handler = logging.FileHandler(file_name, encoding='utf-8') file_handler.setFormatter( logging.Formatter("%(asctime)s: %(message)s")) file_handler.setLevel(logging.ERROR) logger.addHandler(file_handler) return logger logger = init_log() def info_print(*kwargs): message = " ".join([str(i) for i in kwargs]) logger.info(message) def error_print(*kwargs): message = " ".join([str(i) for i in kwargs]) logger.error(message) def get_data_and_save_file(df_sql, save_path): info_print(df_sql) df = pd.read_sql_query(df_sql, engine) info_print(df.shape) if __name__ == '__main__': info_print("开始执行") begin = datetime.datetime.now() yestoday = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y%m%d') yestoday_sql = f"select * from information_schema.TABLES where TABLE_NAME = {yestoday}" get_data_and_save_file(yestoday_sql, os.path.join(save_dir, wind_farm_code_dict['风场编号1'], yestoday[0:4], yestoday[0:6], f'{yestoday}.csv.gz')) info_print("执行结束,总耗时:", datetime.datetime.now() - begin)