purge_history_data.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import datetime
  2. import logging
  3. import os
  4. import sys
  5. import pandas as pd
  6. from sqlalchemy import create_engine, text
  7. engine = create_engine('mysql+pymysql://root:admin123456@192.168.50.235:30306/appoint')
  8. base_dir = r'/data/logs/104'
  9. log_dir = base_dir + os.sep + 'logs' + os.sep + 'delete'
  10. def create_dir(save_dir, is_file=False):
  11. if is_file:
  12. save_dir = os.path.dirname(save_dir)
  13. os.makedirs(save_dir, exist_ok=True)
  14. def init_log():
  15. logger = logging.getLogger("104data")
  16. logger.setLevel(logging.INFO)
  17. stout_handle = logging.StreamHandler(sys.stdout)
  18. stout_handle.setFormatter(
  19. logging.Formatter("%(asctime)s: %(message)s"))
  20. stout_handle.setLevel(logging.INFO)
  21. logger.addHandler(stout_handle)
  22. create_dir(log_dir)
  23. file_name = log_dir + os.sep + datetime.datetime.now().strftime('%Y%m') + '-info.log'
  24. file_handler = logging.FileHandler(file_name, encoding='utf-8')
  25. file_handler.setFormatter(
  26. logging.Formatter("%(asctime)s: %(message)s"))
  27. file_handler.setLevel(logging.INFO)
  28. logger.addHandler(file_handler)
  29. file_name = log_dir + os.sep + datetime.datetime.now().strftime('%Y%m') + '-error.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.ERROR)
  34. logger.addHandler(file_handler)
  35. return logger
  36. logger = init_log()
  37. def info_print(*kwargs):
  38. message = " ".join([str(i) for i in kwargs])
  39. logger.info(message)
  40. def error_print(*kwargs):
  41. message = " ".join([str(i) for i in kwargs])
  42. logger.error(message)
  43. def drop_table(lastdays):
  44. # 构建查询语句
  45. query = text(
  46. f"SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='appoint' AND TABLE_NAME like '{lastdays}%'")
  47. table_df = pd.read_sql(query, engine)
  48. info_print('查询到表', table_df['TABLE_NAME'].values)
  49. for table_name in table_df['TABLE_NAME'].values:
  50. # 构建删除表的SQL语句
  51. drop_query = text(f"DROP TABLE {table_name}")
  52. # 执行删除操作
  53. with engine.connect() as connection:
  54. connection.execute(drop_query)
  55. info_print(f"Table {table_name} deleted")
  56. if __name__ == '__main__':
  57. info_print("开始执行")
  58. begin = datetime.datetime.now()
  59. lastdays = (datetime.datetime.now() - datetime.timedelta(days=8)).strftime('%Y%m%d')
  60. print(lastdays)
  61. drop_table(lastdays)
  62. info_print("执行结束,总耗时:", datetime.datetime.now() - begin)