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回调函数的使用方法
Jan 23 Python
python实现的文件夹清理程序分享
Nov 22 Python
python实现多线程抓取知乎用户
Dec 12 Python
python非递归全排列实现方法
Apr 10 Python
Python入门_学会创建并调用函数的方法
May 16 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
基于Python中的yield表达式介绍
Nov 19 Python
浅谈keras中loss与val_loss的关系
Jun 22 Python
Python库安装速度过慢解决方案
Jul 14 Python
python mock测试的示例
Oct 19 Python
解决Python中的modf()函数取小数部分不准确问题
May 28 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 和 MySQL 时区的一点总结
2008/03/26 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
Javascript hasOwnProperty 方法 & in 关键字
2008/11/26 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
2010/05/13 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
javascript的内存管理详解
2013/08/07 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
详解python发送各类邮件的主要方法
2016/12/22 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
python调用win32接口进行截图的示例
2020/11/11 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
党员学习十八大感想
2014/01/17 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
团结主题班会
2015/08/13 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python