以下是一个示例代码,用于按年份备份数据库,并仅保留最近两个日历年的数据:
import datetime
import shutil
import os
def backup_database():
# 获取当前日期
current_date = datetime.datetime.now()
# 备份目录
backup_dir = "backup/"
# 创建备份目录(如果不存在)
if not os.path.exists(backup_dir):
os.makedirs(backup_dir)
# 获取最近两个日历年的年份
recent_years = [current_date.year - 1, current_date.year - 2]
# 遍历数据库备份目录
for file in os.listdir(backup_dir):
# 获取文件的创建日期
file_path = os.path.join(backup_dir, file)
file_creation_date = datetime.datetime.fromtimestamp(os.path.getctime(file_path))
# 检查文件的创建年份是否在最近两个日历年中
if file_creation_date.year not in recent_years:
# 删除不在最近两个日历年内的文件
os.remove(file_path)
# 备份当前数据库
backup_file_name = f"backup_{current_date.strftime('%Y%m%d%H%M%S')}.db"
shutil.copy("database.db", os.path.join(backup_dir, backup_file_name))
print("数据库备份完成!")
# 调用备份函数
backup_database()
此代码首先获取当前日期,然后创建一个备份目录(如果不存在)。然后,它通过计算最近两个日历年的年份来确定需要保留的数据库备份文件。接下来,它遍历备份目录中的每个文件,并检查其创建日期是否在最近两个日历年内。如果不在这个范围内,它将删除该文件。最后,它备份当前数据库,使用当前日期和时间作为备份文件的名称,并将其存储在备份目录中。在代码的最后,它打印出“数据库备份完成!”的消息。