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 获取本机ip地址的两个方法
Feb 25 Python
python通过urllib2爬网页上种子下载示例
Feb 24 Python
使用python实现strcmp函数功能示例
Mar 25 Python
Python自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
200 行python 代码实现 2048 游戏
Jan 12 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
利用Python计算KS的实例详解
Mar 03 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
python+opencv实现视频抽帧示例代码
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
玛琪朵 Macchiato
2021/03/03 咖啡文化
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
Python实现的检测网站挂马程序
2014/11/30 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
python 获取list特定元素下标的实例讲解
2018/04/09 Python
对pandas处理json数据的方法详解
2019/02/08 Python
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
美国知名户外用品畅销中心:Sierra Trading Post
2016/07/19 全球购物
英国著名的药妆网站:Escentual
2016/07/29 全球购物
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
工程部主管岗位职责
2013/11/17 职场文书
销售经理工作职责范文
2013/12/03 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript