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实现把回车符\r\n转换成\n
Apr 23 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
浅谈Python处理PDF的方法
Nov 10 Python
Python实现生成随机日期字符串的方法示例
Dec 25 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
jupyter notebook参数化运行python方式
Apr 10 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
Jun 23 Python
Python将字典转换为XML的方法
Aug 01 Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 Python
Django配置跨域并开发测试接口
Nov 04 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 地址栏信息的获取代码
2009/01/07 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
浅谈PHP进程管理
2019/03/08 PHP
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
Python使用MONGODB入门实例
2015/05/11 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python模块文件结构代码详解
2018/02/03 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Python函数装饰器实现方法详解
2018/12/22 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
利用python控制Autocad:pyautocad方式
2020/06/01 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
python中altair可视化库实例用法
2021/01/26 Python
公司培训心得体会
2014/01/03 职场文书
《与朱元思书》的教学反思
2014/04/17 职场文书
园林技术专业求职信
2014/07/28 职场文书
晚会开场白和结束语
2015/05/29 职场文书
运动会3000米加油稿
2015/07/21 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
《司马光》教学反思
2016/02/22 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js