mysql计划任务删除_通过定时任务执行mysql的定期删除和新建分区,此处是按日分区...

使用python脚本作为命令脚本,linux的定时任务来每天定时执行

#!/usr/bin/python

# -*- coding: utf8 -*-

import pymysql

import datetime

import calendar

#要分区的表

table_name = 'my_table'

#连接数据库的信息

host,user,passwd,db = ('127.0.0.1','root','123456','test')

#保留数据的天数

days = 2

#===================================================

'''''

#根据月分区,计算出要删除的上月分区名称和下月新增的分区名称

def add_months(dt,months):

month = dt.month - 1 + months

year = dt.year + month / 12

month = month % 12 + 1

day = min(dt.day,calendar.monthrange(year,month)[1])

return dt.replace(year=year, month=month, day=day)

today = datetime.datetime.today()

last_date = add_months(today,-1)

next_date = add_months(today,1)

next_next_date = add_months(next_date,1)

last_p = 'p%s' % last_date.strftime('%Y%m')

next_p = 'p%s' % next_date.strftime('%Y%m')

'''

#===================================================

#根据天分区,根据保留的天数计算出要删除的分区名称和要新增的分区名称

today = datetime.datetime.today()

last_date = today-datetime.timedelta(days)

next_date = today+datetime.timedelta(1)

next_next_date = today+datetime.timedelta(2)

last_p = 'p%s' % last_date.strftime('%Y%m%d')

next_p = 'p%s' % next_date.strftime('%Y%m%d')

sql_add_p = 'alter table %s add partition (partition %s values less than (to_days(\'%s\')))' %(table_name,next_p,next_next_date.strftime('%Y-%m-%d'))

sql_del_p = 'alter table %s drop partition %s' %(table_name,last_p)

#===================================================

#连接数据库,执行删除和新增分区的sql语句

#print sql_add_p

#print sql_del_p

print '==============================================\nstart work:\n%s\n%s' %(sql_add_p,sql_del_p)

conn = pymysql.connect(host,user, passwd, db)

cur = conn.cursor()

cur.execute(sql_add_p)

cur.execute(sql_del_p)

conn.close()

如果是以前没有分过区的表,则需要先创建一个分区,然后才能执行上面的代码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值