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 相关文章推荐
35个Python编程小技巧
Apr 01 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
May 30 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
python对文件目录的操作方法实例总结
Jun 24 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
python中列表的含义及用法
May 26 Python
常用的10个Python实用小技巧
Aug 10 Python
python 深度学习中的4种激活函数
Sep 18 Python
Python 实现二叉查找树的示例代码
Dec 21 Python
Python内置数据类型中的集合详解
Mar 18 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扩展介绍与开发教程
2010/08/19 PHP
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
PHP 快速排序算法详解
2014/11/10 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
ThinkPHP实现附件上传功能
2017/04/27 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
FCK调用方法..
2006/12/21 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
2017/05/07 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
python抓取百度首页的方法
2015/05/19 Python
浅谈Python基础之I/O模型
2017/05/11 Python
Python重新加载模块的实现方法
2018/10/16 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python @property装饰器原理解析
2020/01/22 Python
python 将列表里的字典元素合并为一个字典实例
2020/09/01 Python
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
人事主管岗位职责范本
2013/12/04 职场文书
银行求职自荐书
2014/06/25 职场文书
优秀团支部申报材料
2014/12/26 职场文书
运动会100米广播稿
2015/08/19 职场文书