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 07 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
django中media媒体路径设置的步骤
Nov 15 Python
python迭代器常见用法实例分析
Nov 22 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
Jul 03 Python
python turtle绘制多边形和跳跃和改变速度特效
Mar 16 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
JavaScript中prototype为对象添加属性的误区介绍
2013/10/15 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
js实现查询商品案例
2020/07/22 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
python字符串编码识别模块chardet简单应用
2015/06/15 Python
浅谈五大Python Web框架
2017/03/20 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
python如何实现一个刷网页小程序
2018/11/27 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
自荐信格式范文
2013/10/07 职场文书
国贸专业个人求职信分享
2013/12/04 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
工程项目建议书范文
2014/03/12 职场文书
廉洁校园实施方案
2014/05/25 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
合同意向书范本
2014/07/30 职场文书
婚宴邀请函
2015/01/30 职场文书
初一语文教学反思
2016/03/03 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技