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

编程入门 行业动态 更新时间:2024-10-14 06:18:31

连接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_connmit() 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自动增删分区内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

  • 0
  • 0
  • 0
  • 0
  • 0

更多推荐

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

本文发布于:2023-06-11 00:13:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/622015.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分区   方法   python   mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!