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中的并发编程实例
Jul 07 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
Mar 31 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
Feb 14 Python
python 2.7.14安装图文教程
Apr 08 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
Django的CVB实例详解
Feb 10 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
Python类和实例的属性机制原理详解
Mar 21 Python
python能否java成为主流语言吗
Jun 22 Python
python pymysql库的常用操作
Oct 16 Python
分享一个python的aes加密代码
Dec 22 Python
python实现图片转字符画
Feb 19 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
新手学PHP之数据库操作详解及乱码解决!
2007/01/02 PHP
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
php自定义apk安装包实例
2014/10/20 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
JS实现字符串翻转的方法分析
2018/08/31 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
python判断端口是否打开的实现代码
2013/02/10 Python
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
浅谈Python基础之I/O模型
2017/05/11 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
涉外文秘个人求职的自我评价
2013/10/07 职场文书
大学本科生的个人自我评价
2013/12/09 职场文书
纠风工作实施方案
2014/03/15 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书
2015年项目工作总结
2015/04/29 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python