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网络编程学习笔记(三):socket网络服务器
Jun 09 Python
使用beaker让Facebook的Bottle框架支持session功能
Apr 23 Python
详细解读Python的web.py框架下的application.py模块
May 02 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
Python3爬虫全国地址信息
Jan 05 Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 Python
利用Python实现某OA系统的自动定位功能
May 27 Python
10行Python代码实现Web自动化管控的示例代码
Aug 14 Python
如何设置PyCharm中的Python代码模版(推荐)
Nov 20 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 Python
python numpy中setdiff1d的用法说明
Apr 22 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 PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
php调整服务器时间的方法
2015/04/03 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
PHP iconv()函数字符编码转换的问题讲解
2019/03/22 PHP
PHP rmdir()函数的用法总结
2019/07/02 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
Angular2学习笔记之数据绑定的示例代码
2018/01/03 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Python selenium 三种等待方式解读
2016/09/15 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
借款协议书
2014/04/12 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
2015年幼师工作总结
2015/04/28 职场文书
2015年暑期见闻
2015/07/14 职场文书
Python实现照片卡通化
2021/12/06 Python
无线电通信名词解释
2022/02/18 无线电
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL