您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python 实现mysql自动增删分区的方法

51自学网 2021-10-30 22:46:49
  python
这篇教程python 实现mysql自动增删分区的方法写得很实用,希望能帮到您。

连接mysql

#!/usr/bin/python#-*- coding:utf-8 -*-import timeimport pymysqlclass 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 sysimport pymysqlimport importlibimport loggingfrom datetime import datetime, timedeltafrom dateutil.relativedelta import relativedeltafrom connect_db_forbatch import connect_mysqldef 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自动增删分区内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


python获取指定时间段内特定规律的日期列表
pygame面向对象的飞行小鸟实现(Flappy bird)
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。