python 实现mysql自动增删分区的方法
作者:_雪辉_ 发布时间:2024-01-14 17:09:58
标签:python,mysql,增删分区
连接mysql
#!/usr/bin/python
#-*- coding:utf-8 -*-
import time
import pymysql
class connect_mysql(object):
def __init__(self, host, dbname):
self.mysql_config = {
'host': host,
'port': 33071,
'user': 'sysbench',
'passwd': '970125',
'db': dbname,
'charset': 'utf8mb4',
}
self.dbname = dbname
def select_db(self, sql):
mysql_conn = pymysql.connect(**self.mysql_config)
try:
query = "%s" %(sql)
cur = mysql_conn.cursor()
cur.execute(query)
results = cur.fetchall()
cur.close()
mysql_conn.close()
return results
except Exception as err:
print(err)
def excute_db(self, sql):
mysql_conn = pymysql.connect(**self.mysql_config)
try:
cur = mysql_conn.cursor()
cur.execute(sql)
mysql_conn.commit()
cur.close()
mysql_conn.close()
return 0
except Exception as err:
mysql_conn.rollback()
print(err)
增删分区
#!/usr/bin/python
#-*- coding:utf-8 -*-
import sys
import pymysql
import importlib
import logging
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
from connect_db_forbatch import connect_mysql
def incr_partition():
print("新增分区...")
max_partition_sql = "SELECT REPLACE(partition_name,'p','') FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA='%s' and table_name='%s' ORDER BY partition_ordinal_position DESC LIMIT 1;" %(db_name,table_name)
# print(max_partition_sql)
max_partition = connect_mysql(host,db_name).select_db(max_partition_sql)
max_date = str(max_partition[0][0])
max_partition_name = (datetime.strptime(max_date, "%Y%m%d") + relativedelta(days=1)).strftime("%Y%m%d")
max_partition_value = (datetime.strptime(max_date, "%Y%m%d") + relativedelta(days=2)).strftime("'%Y-%m-%d'")
alter_max_partition_sql = "ALTER TABLE %s.%s ADD PARTITION (PARTITION p%s VALUES LESS THAN (to_days(%s)) ENGINE = InnoDB);" %(db_name,table_name,max_partition_name,max_partition_value)
print(alter_max_partition_sql)
connect_mysql(host,db_name).excute_db(alter_max_partition_sql)
def del_partition():
print("删除分区...")
min_partition_sql = "SELECT REPLACE(partition_name,'p','') FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA='sbtest' and table_name='t1' ORDER BY partition_ordinal_position LIMIT 1;"
# print(min_partition_sql)
min_partition = connect_mysql(host,db_name).select_db(min_partition_sql)
min_date = str(min_partition[0][0])
min_partition_name = (datetime.strptime(min_date, "%Y%m%d") + relativedelta(days=0)).strftime("%Y%m%d")
alter_min_partition_sql = "ALTER TABLE %s.%s DROP PARTITION p%s;" %(db_name,table_name,min_partition_name)
print(alter_min_partition_sql)
connect_mysql(host,db_name).excute_db(alter_min_partition_sql)
if __name__ == "__main__":
host = sys.argv[1]
db_name = sys.argv[2]
table_name = sys.argv[3]
incr_partition()
del_partition()
来源:https://blog.csdn.net/qq_42979842/article/details/115348455


猜你喜欢
- 我们在学习keras经常会看到下面这样的代码段:查阅官方文档可以知道:我们知道彩色图像一般会有Width, Height, Channels
- 最近一个项目开发要用到PHP技术导出Word文档,比较了几种方案,首先是使用Microsoft Office自带的ActiveX/COM组件
- asp取得字段属性代码:set AdoX = server.createobject("adox.c
- #!/usr/bin/env python# -*- coding: utf8 -*-import MySQLdbimport timeim
- 对于注入而言,错误提示是极其重要。所谓错误提示是指和正确页面不同的结果反馈,高手是很重视这个一点的,这对于注入点的精准判断至关重要。本问讨论
- 本文实例讲述了JavaScript转换与解析JSON方法。分享给大家供大家参考,具体如下:json格式数据如下:var json = { &
- Exec sp_droplinkedsrvlogin ZYB,Null --删除映射(录与链接服务器上远程登录之间的映射) Exec sp_
- 最简单的条件语句:if expression: expr_true_suite如上,if是关键字,expression是条件表
- 一、InnoDB的表级锁在绝大多数情况下应该使用行锁,因为事务和行锁往往是选择InnoDB的理由,但个别情况下也使用表级锁。事务需要更新大部
- python函数的两种嵌套方法使用函数的嵌套有两种方式:交叉嵌套回环嵌套交叉嵌套交叉嵌套的方式是在本函数中调用同一级或上一级函数的嵌套方法:
- 一、什么是数据类型其实可以明白数据类型指的就是变量值的不同类型,姓名可能是一种数据类型、年龄可能是一种数据类型、爱好可能又是另一种数据类型二
- 一.简单介绍: functools模块用于高阶函数:作用于或返回其他函数的函数。一般而言,任何可调用对象都可以作为本模块用途的函数
- pLSA(probabilistic Latent Semantic Analysis),概率潜在语义分析模型,是1999年Hoffman提
- 由于个人能力有限,文章中难免会出现错误或遗漏的地方,敬请谅解!同时欢迎你指出,以便我能及时修改,以免误导下一个看官。最后希望本文能给你带来一
- 本文实例讲述了php将12小时制转换成24小时制的方法。分享给大家供大家参考。具体如下:php将12小时制转换成24小时制,输入格式为:02
- tf.app.flags命令行参数解析模块说道命令行参数解析,就不得不提到 python 的 argparse 模块,详情可参考我之前的一篇
- 前言当我们需要安装python的第三方库时,通常都是打开cmd输入pip install xxx去安装。但是默认安装路径在C盘,极大占用空间
- 注:所谓n位数“水仙花数”是指一个n数,其各位数字n次方和等于该数本身。如三位数“水仙花数”是指一个三位数,其各位数3次方和等于该数本身。一
- 前言说到如何用Python执行线性回归,大部分人会立刻想到用sklearn的linear_model,但事实是,Python至少有8种执行线
- 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心, mysql已经为我们提供了这样一个功