本文主要是介绍批量删除table,只保留最近几天的table,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#!/usr/bin/python3 """ 批量删除table,只保留最近几天的table """ import pymysql import redef conn_(host='',usr='',passwd='',db='',port=3306,):conn = pymysql.connect(host, usr, passwd, db, port,charset='utf8')return conndef del_table(conn_,table_pre='',table_suff='%Y%m%d',keep_count=3):date_form = None if table_suff == "%Y%m%d":date_form = "_(\d{4}\d{1,2}\d{1,2})$" date_len = 8 elif table_suff == "%Y-%m-%d":date_form = "_(\d{4}-\d{1,2}-\d{1,2})$" date_len = 10 elif table_suff == "%Y%m":date_form = "_(\d{4}\d{1,2})$" date_len = 6 elif table_suff == "%Y-%m":date_form = "_(\d{4}-\d{1,2})$" date_len = 7 else:raise Exception("暂时不支持其他类型的时间后缀")curs = conn_.cursor()curs.execute('SHOW TABLES')data = curs.fetchall()table_ = r'%s'%table_pre+date_formlist_table = []i = 0 for table in data:mt = re.search(table_, table[0])if mt:if len(mt.groups()[0]) == date_len:list_table.append((table[0], mt.groups()[0]))i += 1 sorted(list_table, key=lambda date: date[1]) #按照表结构后缀时间升序排序 for j in range(i-keep_count):sql = 'DROP TABLE if exists %s'%list_table[j][0]curs.execute(sql)curs.close()conn_.close()if __name__ == '__main__':table_pre = "tree_product" table_suff = "%Y%m%d" # table_suff = "%Y-%m-%d" # table_suff = "%Y%m" # table_suff = "%Y-%m" conn=conn_('10.0.0.11','root','sctele@root','sxf',port=3306)del_table(conn,table_pre=table_pre,table_suff=table_suff,keep_count=1)
这篇关于批量删除table,只保留最近几天的table的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!