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利用装饰器进行运算的实例分析
Aug 04 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python pandas 对时间序列文件处理的实例
Jun 22 Python
kaggle+mnist实现手写字体识别
Jul 26 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
python实现简单名片管理系统
Nov 30 Python
一行Python代码制作动态二维码的实现
Sep 09 Python
Python库skimage绘制二值图像代码实例
Apr 10 Python
pycharm 2018 激活码及破解补丁激活方式
Sep 21 Python
结束运行python的方法
Jun 16 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 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
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
JS获得浏览器版本和操作系统版本的例子
2014/05/13 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
详解Bootstrap各式各样的按钮(推荐)
2016/12/13 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
Vue通过provide inject实现组件通信
2020/09/03 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
python正则表达式之作业计算器
2016/03/18 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
利用python进行文件操作
2020/12/04 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
个人实用的自我评价范文
2013/11/23 职场文书
树转促学习心得体会
2014/09/10 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python