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检测远程udp端口是否打开的方法
Mar 14 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
python实现excel读写数据
Mar 02 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
一文了解Python并发编程的工程实现方法
May 31 Python
django基础学习之send_mail功能
Aug 07 Python
python+OpenCV实现图像拼接
Mar 05 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
python3注册全局热键的实现
Mar 22 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
pytorch 如何使用float64训练
May 24 Python
python 如何做一个识别率百分百的OCR
May 29 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中的cookie
2006/11/26 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
2015/10/16 PHP
PHP 微信支付类 demo
2015/11/30 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
js loading加载效果实现代码
2009/11/24 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
详解Vue如何支持JSX语法
2017/11/10 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
python黑魔法之编码转换
2016/01/25 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
python:接口间数据传递与调用方法
2018/12/17 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
什么是设计模式
2012/06/17 面试题
师范应届毕业生自荐信
2013/11/18 职场文书
2014和解协议书范文
2014/09/15 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
通报表扬范文
2015/01/17 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript