当前位置: 首页 > news >正文

数据库备份工具(实现数据定时覆盖)

数据库备份工具(实现数据定时覆盖)

在这里插入图片描述

永远热爱,永远执着!

工具介绍

自动化测试数据库更新调度程序

这段 Python 脚本自动化了每天定时从生产数据库更新测试数据库的过程。它利用了 schedule 库来安排并执行每天指定时间的更新任务。

特点:

  • 自动数据库更新: 脚本自动连接到生产数据库,检索所有表,并将它们的数据转移到测试数据库。

  • 日志记录: 实现了全面的日志记录,以跟踪执行状态和更新过程中可能发生的任何错误。日志存储在 update_test_db.log 文件中。

  • 批处理处理: 数据传输分批进行,以优化性能,确保对大型数据集的高效处理。

如何使用:

  1. 配置:

    • prod_db_configtest_db_config 字典中配置生产和测试数据库的连接参数,包括用户名、密码、IP 地址、数据库名称和端口。
  2. 依赖项:

    • 确保已安装所需的依赖项。如果没有,请使用 pip install -r requirements.txt 进行安装。
    • cd ./static
    • pip install .\mysqlclient-1.4.6-cp37-cp37m-win_amd64.whl
  3. 日志记录:

    • 日志写入到 update_test_db.log 文件中。确保脚本对其所在目录具有写权限。
  4. 调度:

    • 更新任务被安排在每天午夜(00:00)执行。您可以通过修改 schedule.every().day.at("00:00").do(update_test_db) 行来调整计划。
  5. 执行:

    • 运行脚本。它将每 60 秒检查一次是否有待处理任务。
  6. 监控:

    • 监视日志文件 (update_test_db.log),以跟踪执行状态和更新过程中可能遇到的任何潜在错误。

注意:

  • 数据完整性:

    • 确保生产数据库包含必要的数据,并且测试数据库仅用于测试目的,以避免意外修改。
  • 安全性:

    • 保护数据库凭据,并限制对敏感信息的访问。
  • 错误处理:

    • 脚本包含了健壮的错误处理机制,以捕获并记录执行过程中可能出现的任何异常。

打包应用程序:

您可以使用 PyInstaller 将脚本打包成一个可执行文件,并且可以指定一个图标作为应用程序的图标。例如,您可以运行以下命令:

pyinstaller --onefile --icon=my_icon.ico your_script.py

这将创建一个独立的可执行文件,用户可以直接运行而无需安装 Python 或其他依赖项。

贡献:

欢迎对脚本进行贡献和改进。请随时 fork 仓库,进行修改,并提交 pull 请求。

关于:

该脚本旨在简化测试数据库更新的过程,促进更顺畅的开发和测试工作流程。

祝愉快的测试! 🚀

核心源码

import schedule
import time
import pandas as pd
from sqlalchemy import create_engine, text# 生产数据库配置
prod_db_config = {'username': 'root','password': 'root','ip': '127.0.0.1','database': 'test1','port': 3306
}# 测试数据库配置
test_db_config = {'username': 'root','password': 'root','ip': '127.0.0.1','database': 'test2','port': 3306
}def update_test_db():try:# 构建测试数据库连接字符串test_db_url = f"mysql://{test_db_config['username']}:{test_db_config['password']}@{test_db_config['ip']}:{test_db_config['port']}/{test_db_config['database']}?charset=utf8mb4"# 创建测试数据库引擎test_engine = create_engine(test_db_url)# 测试连接是否成功with test_engine.connect() as conn:conn.execute(text("select 1"))print("成功连接到测试数据库.")# 清除测试数据库中的所有表with test_engine.connect() as conn:tables = conn.execute("SHOW TABLES").fetchall()if tables:for table in tables:conn.execute(f"DROP TABLE IF EXISTS {table[0]}")# 获取生产数据库中的所有表prod_db_url = f"mysql://{prod_db_config['username']}:{prod_db_config['password']}@{prod_db_config['ip']}:{prod_db_config['port']}/{prod_db_config['database']}?charset=utf8mb4"prod_engine = create_engine(prod_db_url)with prod_engine.connect() as prod_conn:tables = prod_conn.execute("SHOW TABLES").fetchall()print("从生产数据库中获取表完成.")# 将生产数据库中的所有表数据备份到测试数据库for table in tables:table_name = table[0]print(f"备份表 {table_name} 数据...")data = pd.read_sql_table(table_name, prod_conn)data.to_sql(table_name, test_engine, index=False, if_exists='replace')print(f"表 {table_name} 数据备份完成.")print("测试数据库更新成功.")except Exception as e:print("更新测试数据库时出错:", e)if __name__ == "__main__":# 将任务调度在每天特定时间执行schedule.every().day.at("23:22").do(update_test_db)# 运行定时任务while True:schedule.run_pending()time.sleep(60)

运行效果

1.可直接代码运行

在这里插入图片描述

1.可执行exe程序

在这里插入图片描述

相关文章:

数据库备份工具(实现数据定时覆盖)

数据库备份工具(实现数据定时覆盖) 永远热爱,永远执着! 工具介绍 自动化测试数据库更新调度程序 这段 Python 脚本自动化了每天定时从生产数据库更新测试数据库的过程。它利用了 schedule 库来安排并执行每天指定时间的更新任务…...

测试环境搭建整套大数据系统(十二:挂载磁盘到hadoop环境)

一:链接硬盘 将硬盘连接到计算机的 SATA 接口或 USB 接口,并确保硬盘通电并处于可用状态。 二:查看硬盘信息 sudo fdisk -l三:创建分区 gdisk /dev/vbd重新扫描磁盘 partprobe /dev/vdb格式化磁盘 mkfs.ext4 /dev/vdb2查看磁…...

Spring事务核心:声明式事务注解式事务

全解:声明式事务和注解事务 在Spring中,事务管理是一个非常重要的特性,它可以帮助开发者在应用程序中实现事务控制。Spring提供了两种事务管理方式:声明式事务和注解事务。 1. 声明式事务 声明式事务是指通过配置文件或注解的方…...

AcWing 1015. 摘花生

Problem: AcWing 1015. 摘花生 文章目录 思路解题方法复杂度Code 思路 这是一个典型的动态规划问题。我们需要在一个二维网格中,从左上角走到右下角,每次只能向右或向下移动,目标是使得经过的路径上的数字之和最大。 我们可以定义dp[i][j]为从…...

Dalle-3、Sora、Stable Diffusion 3 掀起AIGC新浪潮

随着科技的飞速发展,我们迎来了视觉AIGC高光时刻,一个充满无限可能与机遇的新时代。在这个时代里,三大里程碑Dalle-3、Sora和Stable Diffusion 3以其炸裂式的技术发展,引领着AIGC领域的新浪潮。文章首先做相应简要介绍&#xff0c…...

Unity 视频组件 VideoPlayer

组件添加: 在自己定义的组件下(例如:Panel) 点击 Inspector 面板中的 AddComponent ,输入“VideoPlayer”。 资源 这里 视频资源有两种形式,第一种是 VideoClip ,需要将视频文件拖拽到该属性字段…...

RSTP环路避免实验(华为)

思科设备参考:RSTP环路避免实验(思科) 一,技术简介 RSTP (Rapid Spanning Tree Protocol) 是从STP发展而来 • RSTP标准版本为IEEE802.1w • RSTP具备STP的所有功能,可以兼容STP运行 • RSTP和STP有所不同 减少了…...

Arduino IDE工程代码多文件编程和中文设置

一、esp8266模块信息 二、中英文切换 点击文件( File )–选择首选项( Preference )—选择语言( Language )—选择中文–点击确定( OK ) 三、多文件编程 在Arduino编程中,将代码分割成多个文件是一种很好的做法,特别是项目变得越来越大和复杂时。这样…...

【微服务】Eureka(服务注册,服务发现)

文章目录 1.基本介绍1.学前说明2.当前架构分析1.示意图2.问题分析 3.引出Eureka1.项目架构分析2.上图解读 2.创建单机版的Eureka1.创建 e-commerce-eureka-server-9001 子模块2.检查父子pom.xml1.子 pom.xml2.父 pom.xml 3.pom.xml 引入依赖4.application.yml 配置eureka服务5.…...

windows上ssh设置代理,直接访问公司内网

ssh设置代理一般来说很简单,对于无密码或者可以支持密钥登录的,都比较无脑 难的地方在于使用用户名密码认证来使用一个http的代理或者socks5的代理,密码如何设置?特殊字符如何处理? 直接上答案,.ssh/conf…...

C++ union用法

在C中,union是一种特殊的数据类型,可以在同一个内存位置存储不同的数据类型。它的用法如下: 1. 声明union类型:使用关键字union加上union名称来声明一个union类型。 c union UnionName { dataType1 member1; dataType2 …...

JavaSE_运算符 案例分析

/*符号在字符串中的操作: 表示连接,会将其他内容和字符串连接在一起,形成一个字符串目标:理解符号在字符串中的作用会将其他内容和字符串连接在一起,形成一个字符串*/ public class Operator03 {public static void main(String[] args) {System.out.println("5 5 "…...

15、Spring Cloud Alibaba Sentinel实现熔断与限流

注:本篇文章主要参考周阳老师讲解的cloud进行整理的! 1、Sentinel 1.1、官网 https://sentinelguard.io/zh-cn/ 等价对标 Spring Cloud Circuit Breaker 1.2、是什么 https://github.com/alibaba/Sentinel/wiki 1.3、去哪下 https://github.com/alibab…...

Linux logout命令教程:如何安全地退出Linux会话(附实例详解和注意事项)

Linux logout命令介绍 logout命令用于退出当前的登录Shell。这个命令可以被普通用户用来结束他们自己的会话。 Linux logout命令适用的Linux版本 logout命令在所有主流的Linux发行版中都是可用的,包括但不限于Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、R…...

数据结构——顺序表(C语言版)

顺序表是数据结构中最基本的一种线性表,它以一段连续的存储空间来存储数据元素,元素之间的顺序由它们在内存中的位置来决定。在C语言中,我们通常使用数组来实现顺序表。 目录 顺序表的结构定义 顺序表的基本操作 应用实例 顺序表的结构定义…...

Knative 助力 XTransfer 加速应用云原生 Serverless 化

作者:元毅 公司介绍 XTransfer 是一站式外贸企业跨境金融和风控服务公司,致力于帮助中小微企业大幅降低全球展业的门槛和成本,提升全球竞争力。公司连续7年专注 B2B 外贸金融服务,已成为中国 B2B 外贸金融第一平台,目…...

服务器离线配置vscode连接,conda虚拟环境

记录一下服务器离线配置问题,以备不时之需。 服务器离线配置 vscode连接参考:vscode-server离线安装-CSDN博客 服务器离线配置conda虚拟环境:Conda 环境离线迁移(服务器断网情况下搭建虚拟环境envs) - 知乎 上次两个…...

各种需要使用的方法-->vue/微信小程序/layui

各种需要使用的方法-->vue/微信小程序/layui 1、vue里样式不起作用的方法,可以通过deep穿透的方式2、 js获取本周、上周、本月、上月日期3、ArrayBuffer Blob 格式转换ArrayBuffer与Blob的区别ArrayBuffer转BlobBlob转ArrayBuffer需要借助fileReader对象 4、使用…...

360奇酷刷机 360刷机助手 QGDP360手机QGDP刷机

360奇酷刷机 360刷机助手 QGDP破解版360手机QGDP刷机 360手机刷机资源下载链接:360rom.github.io 参考:360手机-360刷机360刷机包twrp、root 360奇酷刷机:360高通驱动安装 360手机刷机驱动;手机内置,可通过USB文件传输…...

2299. 强密码检验器 II

文章目录 题意思路代码 题意 题目链接 判断是否合法密码 思路 if 代码 class Solution { public:bool strongPasswordCheckerII(string password) {if (password.size() < 8)return false;int visit 0;for (size_t i 0; i < password.size(); i){char &ch pa…...

终极指南:免费解锁Cursor Pro完整功能,告别AI编程限制

终极指南&#xff1a;免费解锁Cursor Pro完整功能&#xff0c;告别AI编程限制 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reach…...

Linux五种I/O模型详解与性能对比

1. Linux I/O 模型基础概念解析在深入探讨五种I/O模型之前&#xff0c;我们需要先理解几个关键的基础概念。这些概念是理解不同I/O模型差异的基石&#xff0c;也是很多开发者在实际工作中容易混淆的地方。1.1 用户态与内核态Linux系统将运行环境分为用户态(User mode)和内核态(…...

Arduino轻量URL编解码库:RFC 3986兼容的嵌入式urlencode/urldecode实现

1. 项目概述URLCode 是一个专为 Arduino 平台设计的轻量级 URL 编解码库&#xff0c;其核心目标是提供符合 RFC 3986 标准的application/x-www-form-urlencoded格式字符串的编码&#xff08;urlencode&#xff09;与解码&#xff08;urldecode&#xff09;能力。该库不依赖 Ard…...

夜间自动化!OpenClaw调度Qwen3-4B完成凌晨数据备份

夜间自动化&#xff01;OpenClaw调度Qwen3-4B完成凌晨数据备份 1. 为什么需要夜间自动化备份 凌晨三点&#xff0c;我的手机突然弹出服务器告警——又一次因为手动备份遗漏导致磁盘空间不足。作为个人开发者&#xff0c;我意识到需要一套能利用闲置计算资源的自动化方案。传统…...

从MIMO到相控阵:深入浅出聊聊RFSoC的MTS(多片同步)为啥是5G/雷达系统的核心

从MIMO到相控阵&#xff1a;深入浅出聊聊RFSoC的MTS&#xff08;多片同步&#xff09;为啥是5G/雷达系统的核心 在5G Massive MIMO基站的天线阵列背后&#xff0c;或是军用雷达的相控阵天线系统中&#xff0c;数以百计的射频收发通道需要像精密交响乐团般协同工作——任何微小的…...

Python自动化办公:3分钟搞定Outlook邮件批量导出(附完整代码)

Python自动化办公&#xff1a;3分钟搞定Outlook邮件批量导出&#xff08;附完整代码&#xff09; 每天早晨打开Outlook&#xff0c;面对堆积如山的未读邮件&#xff0c;你是否也感到一阵窒息&#xff1f;市场部的周报、客户的需求变更、财务部的报销提醒……重要信息散落在上百…...

新手福音:跳过jdk安装,在快马平台开启你的java编程第一课

作为一个Java新手&#xff0c;最让人头疼的往往不是学习语法本身&#xff0c;而是那些繁琐的环境配置。记得我刚开始学Java时&#xff0c;光是安装JDK就折腾了大半天&#xff0c;还要配置环境变量、测试安装是否成功...这些准备工作简直能把学习的热情消磨殆尽。 不过现在有了I…...

如何使用Photon光影包提升Minecraft视觉体验

如何使用Photon光影包提升Minecraft视觉体验 【免费下载链接】photon A gameplay-focused shader pack for Minecraft 项目地址: https://gitcode.com/gh_mirrors/photon3/photon Photon光影包是一款专注于游戏体验的Minecraft光影解决方案&#xff0c;通过先进的光照算…...

别再手动调样式了!用WangEditor的Menu API在Vue3里打造你的专属工具栏

深度定制WangEditor&#xff1a;用Menu API在Vue3中构建企业级富文本生态 当我们需要在Vue3项目中集成富文本编辑器时&#xff0c;WangEditor以其轻量级和高度可定制性成为许多开发者的首选。但真正发挥其威力的关键在于深入理解其Menu API系统——这套机制允许我们突破默认功能…...

灵活创建Windows安装介质:MediaCreationTool.bat的实用指南

灵活创建Windows安装介质&#xff1a;MediaCreationTool.bat的实用指南 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...