python 实现mysql自动增删分区的方法

 更新时间:2021年04月01日 10:59:47   作者:_雪辉_  
这篇文章主要介绍了python 实现mysql自动增删分区的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

连接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+selenium操作下拉框

    python+selenium操作下拉框

    这篇文章主要介绍了python+selenium操作下拉框,下面文章围绕python+selenium实现下拉框的相关资料展开全文章详细内容,需要的小伙伴可以参考一下
    2022-02-02
  • Python抽象和自定义类定义与用法示例

    Python抽象和自定义类定义与用法示例

    这篇文章主要介绍了Python抽象和自定义类定义与用法,结合实例形式分析了Python抽象方法、抽象类相关功能、定义、用法及相关操作注意事项,需要的朋友可以参考下
    2018-08-08
  • PyQt5 设置窗口全屏显示方式

    PyQt5 设置窗口全屏显示方式

    这篇文章主要介绍了PyQt5 设置窗口全屏显示方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python正则捕获操作示例

    Python正则捕获操作示例

    这篇文章主要介绍了Python正则捕获操作,结合具体实例形式分析了Python基于正则表达式的分组、捕获、替换等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Python备份目录及目录下的全部内容的实现方法

    Python备份目录及目录下的全部内容的实现方法

    下面小编就为大家带来一篇Python备份目录及目录下的全部内容的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • pycharm中没有找到database的解决方案

    pycharm中没有找到database的解决方案

    这篇文章主要介绍了pycharm中没有找到database的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python中uuid模块生成唯一标识符的方法详解

    Python中uuid模块生成唯一标识符的方法详解

    这篇文章主要给大家介绍了关于Python中uuid模块生成唯一标识符的相关资料,uuid库是Python标准库中的一个功能强大的库,可以用于生成全局唯一标识符(UUID),文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • Python利用fastapi实现上传文件

    Python利用fastapi实现上传文件

    FastAPI是一个现代的,快速(高性能)python web框架。本文将利用fastapi实现上传文件功能,文中的示例代码讲解详细,需要的可以参考一下
    2022-06-06
  • Python 迭代器介绍及作用详情

    Python 迭代器介绍及作用详情

    这篇文章主要介绍了Python 迭代器介绍及作用详情,Python 中的迭代器是一个对象,用于迭代列表、元组、字典和集合等可迭代对象,文章围绕主题展开详细的内容介绍,需要的朋友可以参考一下
    2022-07-07
  • Mac下python包管理工具pip的安装

    Mac下python包管理工具pip的安装

    这篇文章介绍了Mac下python包管理工具pip的安装方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论