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中函数的参数
Apr 27 Python
Python选课系统开发程序
Sep 02 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
Python利用递归实现文件的复制方法
Oct 27 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
python zip()函数使用方法解析
Oct 31 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
如何通过python实现全排列
Feb 11 Python
Python字符串查找基本操作代码案例
Oct 27 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
对盗链说再见...
2006/10/09 PHP
php中的实现trim函数代码
2007/03/19 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
PHP实现简单日历类编写
2020/08/28 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
JS Array对象入门分析
2008/10/30 Javascript
jQuery AJAX回调函数this指向问题
2010/02/08 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
支付宝小程序tabbar底部导航
2018/11/06 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
opencv与numpy的图像基本操作
2019/03/08 Python
python如何将多个PDF进行合并
2019/08/13 Python
python实现飞行棋游戏
2020/02/05 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
挂职个人工作总结
2015/03/05 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL