feat: 添加系统级管理专属页面权限
This commit is contained in:
@@ -5,9 +5,13 @@
|
||||
# @File : database.py
|
||||
# @Software : PyCharm
|
||||
# @Comment : 本程序
|
||||
import asyncio
|
||||
import logging
|
||||
import subprocess
|
||||
import sys
|
||||
from datetime import datetime
|
||||
from logging.handlers import RotatingFileHandler
|
||||
from pathlib import Path
|
||||
|
||||
from tortoise import Tortoise
|
||||
|
||||
@@ -136,3 +140,41 @@ async def configure_tortoise_logging(enable_logging: bool = True, log_level: int
|
||||
else:
|
||||
# 如果禁用日志,设置日志级别为 WARNING 以抑制大部分输出
|
||||
tortoise_logger.setLevel(logging.WARNING)
|
||||
|
||||
|
||||
async def backup_database():
|
||||
"""
|
||||
备份数据库
|
||||
"""
|
||||
logger.info("开始备份数据库")
|
||||
# 配置数据库连接信息
|
||||
backup_dir = Path().cwd() / "sql" # 备份文件存储的目录
|
||||
|
||||
# 如果 migrations 目录不存在,则创建
|
||||
backup_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# 生成备份文件名,格式为 dbYYYYMMDDHHMMSS.sql
|
||||
timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
|
||||
backup_filename = f"db{timestamp}.sql"
|
||||
backup_filepath = backup_dir / backup_filename # 使用 Path 对象组合路径
|
||||
|
||||
# 构造 mysqldump 命令
|
||||
command = [
|
||||
"mysqldump",
|
||||
"-u", DataBaseConfig.db_username,
|
||||
f"-p{DataBaseConfig.db_password}", # 直接传递密码
|
||||
DataBaseConfig.db_database,
|
||||
"--result-file=" + str(backup_filepath) # 指定备份文件路径
|
||||
]
|
||||
|
||||
# 使用 asyncio.to_thread 来在线程中执行阻塞操作
|
||||
await asyncio.to_thread(run_mysqldump, command)
|
||||
|
||||
|
||||
def run_mysqldump(command):
|
||||
"""在阻塞线程中执行 mysqldump 命令"""
|
||||
try:
|
||||
subprocess.run(command, check=True)
|
||||
logger.info(f"数据库备份已完成,文件保存为 {command[-1]}")
|
||||
except subprocess.CalledProcessError as e:
|
||||
logger.error(f"备份失败,错误: {e}")
|
||||
|
||||
Reference in New Issue
Block a user