如何使用 PyMySQL 进行数据库的备份和恢复

发布于:2024-07-28 ⋅ 阅读:(121) ⋅ 点赞:(0)

数据库备份

备份数据库通常使用 mysqldump 命令。可以通过Python脚本执行如下命令:

import os
import pymysql
import time

# 定义数据库连接信息
sql_host = 'localhost'
sql_user = 'your_username'  # 数据库登录用户
sql_pwd = 'your_password'   # 数据库登录密码
databases = ['db1', 'db2']   # 要备份的数据库列表

# 存放备份文件的地址
root_path = './backups/'
if not os.path.exists(root_path):
    os.mkdir(root_path)

# 创建备份
for database_name in databases:
    backup_file = os.path.join(root_path, database_name + '_' + time.strftime('%Y%m%d') + '.sql')
    sql_command = "mysqldump -u%s -p%s %s > %s --default-character-set=utf8" % (
        sql_user, sql_pwd, database_name, backup_file)
    if os.system(sql_command) == 0:
        print(f"{database_name} backup successfully! Backup file path: {backup_file}")
    else:
        print(f"{database_name} backup failed.") 

数据库恢复

恢复数据库可以通过 mysql 命令行工具来实现。以下是一个Python脚本示例,用于从备份文件恢复数据库:

import os
import pymysql
import time

# 定义数据库连接信息
sql_host = 'localhost'
sql_user = 'your_username'  # 数据库登录用户
sql_pwd = 'your_password'   # 数据库登录密码

# 备份文件地址
sql_path = './backups/db1_20230101.sql'  # 存放sql文件的地址

# 恢复数据
if os.path.exists(sql_path):
    database_name = 'db1'  # 要恢复到的数据库名
    sql_command = "mysql -u%s -p%s -D%s < %s" % (
        sql_user, sql_pwd, database_name, sql_path)
    if os.system(sql_command) == 0:
        print(f"{database_name} restore successfully.")
    else:
        print(f"{database_name} restore failed.")
else:
    print('Backup file does not exist.')

请注意,上述脚本中的 'your_username', 'your_password', 和 'db1' 需要替换为实际的数据库登录信息和数据库名。备份和恢复操作需要相应的权限,确保数据库用户具有执行 mysqldumpmysql 命令的权限。