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之编写类之一创建实例
Oct 11 Python
浅谈python可视化包Bokeh
Feb 07 Python
Flask框架Flask-Login用法分析
Jul 23 Python
Tornado Web Server框架编写简易Python服务器
Jul 28 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
python对验证码降噪的实现示例代码
Nov 12 Python
Pytorch基本变量类型FloatTensor与Variable用法
Jan 08 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 Python
python-for x in range的用法(注意要点、细节)
May 10 Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Jun 07 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
PHP经典的给图片加水印程序
2006/12/06 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
PHP强制转化的形式整理
2020/05/22 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
Javascript学习笔记二 之 变量
2010/12/15 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
React-Native 组件之 Modal的使用详解
2017/08/08 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
tensorflow输出权重值和偏差的方法
2018/02/10 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
Django models.py应用实现过程详解
2019/07/29 Python
python rsync服务器之间文件夹同步脚本
2019/08/29 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
Python 解析xml文件的示例
2020/09/29 Python
英国香水店:The Perfume Shop
2017/03/27 全球购物
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
运动会解说词50字
2014/01/18 职场文书
区三好学生主要事迹
2014/01/30 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
中小学生学籍证明
2014/10/25 职场文书
2014年关工委工作总结
2014/11/17 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang