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中循环语句的嵌套使用
May 14 Python
Python IDLE入门简介
Dec 08 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
Python测试模块doctest使用解析
Aug 10 Python
python打造爬虫代理池过程解析
Aug 15 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
python安装后的目录在哪里
Jun 21 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 学习路线与时间表
2010/02/21 PHP
php+mysql实现无限分类实例详解
2015/01/15 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
php上传图片类及用法示例
2016/05/11 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
React组件之间的通信的实例代码
2017/06/27 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
javascript实现抢购倒计时程序
2019/08/26 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
学习python (1)
2006/10/31 Python
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
python列表推导式入门学习解析
2019/12/02 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
2014政务公开实施方案
2014/02/19 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
2019求职信大礼包
2019/05/15 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
使用python绘制横竖条形图
2022/04/21 Python