1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import datetime
- import logging
- import os
- import sys
- import pandas as pd
- from sqlalchemy import create_engine, text
- engine = create_engine('mysql+pymysql://root:admin123456@192.168.50.235:30306/appoint')
- base_dir = r'/data/logs/104'
- log_dir = base_dir + os.sep + 'logs' + os.sep + 'delete'
- 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 drop_table(lastdays):
- # 构建查询语句
- query = text(
- f"SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='appoint' AND TABLE_NAME like '{lastdays}%'")
- table_df = pd.read_sql(query, engine)
- info_print('查询到表', table_df['TABLE_NAME'].values)
- for table_name in table_df['TABLE_NAME'].values:
- # 构建删除表的SQL语句
- drop_query = text(f"DROP TABLE {table_name}")
- # 执行删除操作
- with engine.connect() as connection:
- connection.execute(drop_query)
- info_print(f"Table {table_name} deleted")
- if __name__ == '__main__':
- info_print("开始执行")
- begin = datetime.datetime.now()
- lastdays = (datetime.datetime.now() - datetime.timedelta(days=8)).strftime('%Y%m%d')
- print(lastdays)
- drop_table(lastdays)
- info_print("执行结束,总耗时:", datetime.datetime.now() - begin)
|