欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python自制數(shù)據(jù)庫備份工具實現(xiàn)數(shù)據(jù)定時覆蓋

 更新時間:2024年03月26日 08:36:52   作者:IT小輝同學  
這篇文章主要為大家詳細介紹了如何使用Python自制數(shù)據(jù)庫備份工具實現(xiàn)數(shù)據(jù)定時覆蓋功能,文中的示例代碼講解詳細,需要的小伙伴可以參考下

工具介紹

自動化測試數(shù)據(jù)庫更新調(diào)度程序

這段 Python 腳本自動化了每天定時從生產(chǎn)數(shù)據(jù)庫更新測試數(shù)據(jù)庫的過程。它利用了 schedule 庫來安排并執(zhí)行每天指定時間的更新任務(wù)。

特點

  • 自動數(shù)據(jù)庫更新: 腳本自動連接到生產(chǎn)數(shù)據(jù)庫,檢索所有表,并將它們的數(shù)據(jù)轉(zhuǎn)移到測試數(shù)據(jù)庫。
  • 日志記錄: 實現(xiàn)了全面的日志記錄,以跟蹤執(zhí)行狀態(tài)和更新過程中可能發(fā)生的任何錯誤。日志存儲在 update_test_db.log 文件中。
  • 批處理處理: 數(shù)據(jù)傳輸分批進行,以優(yōu)化性能,確保對大型數(shù)據(jù)集的高效處理。

如何使用

配置:

prod_db_configtest_db_config 字典中配置生產(chǎn)和測試數(shù)據(jù)庫的連接參數(shù),包括用戶名、密碼、IP 地址、數(shù)據(jù)庫名稱和端口。

依賴項:

  • 確保已安裝所需的依賴項。如果沒有,請使用 pip install -r requirements.txt 進行安裝。
  • cd ./static
  • pip install .\mysqlclient-1.4.6-cp37-cp37m-win_amd64.whl

日志記錄:

日志寫入到 update_test_db.log 文件中。確保腳本對其所在目錄具有寫權(quán)限。

調(diào)度:

更新任務(wù)被安排在每天午夜(00:00)執(zhí)行。您可以通過修改 schedule.every().day.at("00:00").do(update_test_db) 行來調(diào)整計劃。

執(zhí)行:

運行腳本。它將每 60 秒檢查一次是否有待處理任務(wù)。

監(jiān)控:

監(jiān)視日志文件 (update_test_db.log),以跟蹤執(zhí)行狀態(tài)和更新過程中可能遇到的任何潛在錯誤。

注意

數(shù)據(jù)完整性:

確保生產(chǎn)數(shù)據(jù)庫包含必要的數(shù)據(jù),并且測試數(shù)據(jù)庫僅用于測試目的,以避免意外修改。

安全性:

保護數(shù)據(jù)庫憑據(jù),并限制對敏感信息的訪問。

錯誤處理:

腳本包含了健壯的錯誤處理機制,以捕獲并記錄執(zhí)行過程中可能出現(xiàn)的任何異常。

打包應(yīng)用程序

您可以使用 PyInstaller 將腳本打包成一個可執(zhí)行文件,并且可以指定一個圖標作為應(yīng)用程序的圖標。例如,您可以運行以下命令:

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

這將創(chuàng)建一個獨立的可執(zhí)行文件,用戶可以直接運行而無需安裝 Python 或其他依賴項。

貢獻:

歡迎對腳本進行貢獻和改進。請隨時 fork 倉庫,進行修改,并提交 pull 請求。

關(guān)于:

該腳本旨在簡化測試數(shù)據(jù)庫更新的過程,促進更順暢的開發(fā)和測試工作流程。

核心源碼

import schedule
import time
import pandas as pd
from sqlalchemy import create_engine, text

# 生產(chǎn)數(shù)據(jù)庫配置
prod_db_config = {
    'username': 'root',
    'password': 'root',
    'ip': '127.0.0.1',
    'database': 'test1',
    'port': 3306
}

# 測試數(shù)據(jù)庫配置
test_db_config = {
    'username': 'root',
    'password': 'root',
    'ip': '127.0.0.1',
    'database': 'test2',
    'port': 3306
}


def update_test_db():
    try:
        # 構(gòu)建測試數(shù)據(jù)庫連接字符串
        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"

        # 創(chuàng)建測試數(shù)據(jù)庫引擎
        test_engine = create_engine(test_db_url)

        # 測試連接是否成功
        with test_engine.connect() as conn:
            conn.execute(text("select 1"))
        print("成功連接到測試數(shù)據(jù)庫.")

        # 清除測試數(shù)據(jù)庫中的所有表
        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]}")

        # 獲取生產(chǎn)數(shù)據(jù)庫中的所有表
        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("從生產(chǎn)數(shù)據(jù)庫中獲取表完成.")

            # 將生產(chǎn)數(shù)據(jù)庫中的所有表數(shù)據(jù)備份到測試數(shù)據(jù)庫
            for table in tables:
                table_name = table[0]
                print(f"備份表 {table_name} 數(shù)據(jù)...")
                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} 數(shù)據(jù)備份完成.")

        print("測試數(shù)據(jù)庫更新成功.")
    except Exception as e:
        print("更新測試數(shù)據(jù)庫時出錯:", e)

if __name__ == "__main__":
    # 將任務(wù)調(diào)度在每天特定時間執(zhí)行
    schedule.every().day.at("23:22").do(update_test_db)

    # 運行定時任務(wù)
    while True:
        schedule.run_pending()
        time.sleep(60)

運行效果

1.可直接代碼運行

2.可執(zhí)行exe程序

到此這篇關(guān)于使用Python自制數(shù)據(jù)庫備份工具實現(xiàn)數(shù)據(jù)定時覆蓋的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)庫備份內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中順序結(jié)構(gòu)和循環(huán)結(jié)構(gòu)示例代碼

    Python中順序結(jié)構(gòu)和循環(huán)結(jié)構(gòu)示例代碼

    這篇文章主要介紹了Python中的條件語句和循環(huán)語句,條件語句用于根據(jù)條件執(zhí)行不同的代碼塊,循環(huán)語句用于重復(fù)執(zhí)行一段代碼,文章還詳細說明了range函數(shù)的使用和continue與break語句的作用,需要的朋友可以參考下
    2025-02-02
  • python刪除特定文件的方法

    python刪除特定文件的方法

    這篇文章主要介紹了python刪除特定文件的方法,涉及Python文件查找及刪除的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • python中for用來遍歷range函數(shù)的方法

    python中for用來遍歷range函數(shù)的方法

    今天小編就為大家分享一篇python中for用來遍歷range函數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python實現(xiàn)批量提取Word中的表格

    Python實現(xiàn)批量提取Word中的表格

    表格在word文檔中常見的文檔元素之一,操作word文件時有時需要提取文件中多個表格的內(nèi)容到一個新的文件,本文給大家分享兩種批量提取文檔中表格的兩種方法,希望對大家有所幫助
    2024-02-02
  • Python使用CMD模塊更優(yōu)雅的運行腳本

    Python使用CMD模塊更優(yōu)雅的運行腳本

    這篇文章主要介紹了Python使用CMD模塊更優(yōu)雅的運行腳本的方法,實例分析了Python中cmd模塊的相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • 一文解決django 2.2與mysql兼容性問題

    一文解決django 2.2與mysql兼容性問題

    Django是一個開放源代碼的Web應(yīng)用框架,由Python寫成。采用了MTV的框架模式,即模型M,視圖V和模版T。這篇文章主要介紹了解決django 2.2與mysql兼容性問題,需要的朋友可以參考下
    2020-07-07
  • python利用urllib和urllib2訪問http的GET/POST詳解

    python利用urllib和urllib2訪問http的GET/POST詳解

    urllib模塊提供的上層接口,使我們可以像讀取本地文件一樣讀取www和ftp上的數(shù)據(jù)。下面這篇文章主要給大家介紹了關(guān)于python如何利用urllib和urllib2訪問http的GET/POST的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • Python使用arrow庫優(yōu)雅地處理時間數(shù)據(jù)詳解

    Python使用arrow庫優(yōu)雅地處理時間數(shù)據(jù)詳解

    雖然Python提供了多個內(nèi)置模塊用于操作日期時間,但有的時候并不能滿足我們的需求,所以下面這篇文章主要給大家介紹了關(guān)于Python使用arrow庫如何優(yōu)雅地處理時間數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10
  • python使用Qt界面以及邏輯實現(xiàn)方法

    python使用Qt界面以及邏輯實現(xiàn)方法

    這篇文章主要介紹了python使用Qt界面以及邏輯實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 10 行 Python 代碼教你自動發(fā)送短信(不想回復(fù)工作郵件妙招)

    10 行 Python 代碼教你自動發(fā)送短信(不想回復(fù)工作郵件妙招)

    這篇文章主要介紹了10 行 Python 代碼教你自動發(fā)送短信(不想回復(fù)工作郵件妙招),目前在國內(nèi)通過手機短信保障信息安全是比較常見的,具體實例代碼大家跟隨小編一起通過本文學習吧
    2018-10-10

最新評論