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 相关文章推荐
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
Python文件和流(实例讲解)
Sep 12 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
Python实现将Excel转换成为image的方法
Oct 23 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
python中利用matplotlib读取灰度图的例子
Dec 07 Python
Python类继承和多态原理解析
Feb 05 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Python 中由 yield 实现异步操作
May 04 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 Python
Python自动化测试中yaml文件读取操作
Aug 20 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
基于Windows下Apache PHP5.3.1安装教程
2010/01/08 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
探讨php中遍历二维数组的几种方法详解
2013/06/08 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
一款基jquery超炫的动画导航菜单可响应单击事件
2014/11/02 Javascript
JavaScript实现同时调用多个函数的方法
2015/11/09 Javascript
js操作DOM--添加、删除节点的简单实例
2016/07/08 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
vue 内联样式style中的background用法说明
2020/08/05 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
财务人员求职自荐书范文
2014/02/10 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
仓库主管岗位职责
2014/03/02 职场文书
主题班会演讲稿
2014/05/22 职场文书
学雷锋标语
2014/06/25 职场文书
应届生求职自荐信
2014/07/04 职场文书
休假证明书
2015/06/24 职场文书