python table删除一列_Python批量删除只保留最近几天table的代码实例

python批量删除table,只保留最近几天的table

代码如下:

#!/usr/bin/python3

"""

批量删除table,只保留最近几天的table

"""

import pymysql

import re

def conn_(host='',usr='',passwd='',db='',port=3306,):

conn = pymysql.connect(host, usr, passwd, db, port,charset='utf8')

return conn

def 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_form

list_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)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对萬仟网的支持。如果你想了解更多相关内容请查看下面相关链接

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值