python 实现mysql自动增删分区的方法


Posted in Python onApril 01, 2021

连接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()

到此这篇关于python 实现mysql自动增删分区的方法的文章就介绍到这了,更多相关python mysql自动增删分区内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的map()函数和reduce()函数的用法
Apr 27 Python
Python语言的面相对象编程方式初步学习
Mar 12 Python
Python中的命令行参数解析工具之docopt详解
Mar 27 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
python代理工具mitmproxy使用指南
Jul 04 Python
python GUI图形化编程wxpython的使用
Jul 19 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Django admin管理工具TabularInline类用法详解
May 14 Python
python爬虫破解字体加密案例详解
Mar 02 Python
pygame面向对象的飞行小鸟实现(Flappy bird)
如何用python插入独创性声明
python OpenCV学习笔记
python基于OpenCV模板匹配识别图片中的数字
Python insert() / append() 用法 Leetcode实战演示
Mar 31 #Python
tensorflow学习笔记之tfrecord文件的生成与读取
Mar 31 #Python
Python中快速掌握Data Frame的常用操作
Mar 31 #Python
You might like
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
又一个图片自动缩小的JS代码
2007/03/10 Javascript
js类中获取外部函数名的方法
2007/08/19 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
Python配置mysql的教程(推荐)
2017/10/13 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
Carmen Sol官网:购买果冻鞋、手袋和配件
2021/01/01 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
Linux的文件类型
2016/07/05 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
大学生个人求职口试自我评价
2014/02/16 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
史上最牛辞职信
2015/05/13 职场文书
论文致谢词范文
2015/05/14 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android