mysql自动备份_Python自动备份MySQL数据库---Windows环境下

我们知道MySQL是自带数据库备份功能的,但是这个功能在Windows下很受限制。如果你完整备份整个数据库,就需要还原整个数据库,而这时你会发现有多么无助,可能你还原了50%,突然报错,你又得重新还原,而且时间巨长。如果单表备份,你不仅需要把每个表的名字写一遍,新建的表还需要反复修改备份命令。所以,我想到一个Python逐表备份的方法,这样即使出什么问题,你只需要还原指定的表就可以了。

下面请看具体实施方法:

import pymysql
import os
import datetime

# 获取当前时间
t = datetime.datetime.now()
# 获取当前日期
dt = t.date()
dt = datetime.datetime.strftime(dt,"%Y%m%d")
path = 'E:/Mysqlbackup/Test_%s/' % dt
# 判断要创建的文件夹是否已经存在
a = os.path.exists(path)
if a == False:
    # 如果文件夹不存在则创建
    os.mkdir(path)
conn = pymysql.connect(host=localhost,user='Admin',passwd='pwd',db='Test',port=3306,charset='utf8mb4')
cur = conn.cursor()
# 获取指定数据库中所有表的信息
sql = "show table status where Engine is not null "
cur.execute(sql)
result = cur.fetchall()
# 编写命令行
cmd1 = "mysqldump -u root -ppwd %s --default-character-set=gbk > %s%s.sql"
# 如果要压缩备份好的表,安装WinRAR,并配置好环境变量
cmd2 = "WinRAR m -r -ep1 %s%s.rar %s%s.sql"
cmd3 = "@echo off"
cmd4 = "@echo on"
os.system(cmd3)
for i in result:
    # 做个备份数据库中的表
    os.system(cmd1 % (i[0], path, i[0]))
    # 将备份好的数据库表进行压缩
    os.system(cmd2 % (path, i[0], path, i[0]))
os.system(cmd4)
cur.close()
conn.close()

上面的Python脚本写好以后,你在Windows环境下的服务器上,设置好计划任务,这样就可以每天看到新鲜出炉的备份文件了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值