最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python基于docker部署的Mysql備份查詢腳本

 更新時(shí)間:2024年04月19日 10:01:25   作者:蝸牛其實(shí)也很努力  
這篇文章主要來(lái)和大家分享Python基于docker部署的Mysql備份查詢的腳本,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起了解下

前言

此環(huán)境是基于docker部署的mysql,docker部署mysql可以參考如下鏈接:

docker 部署服務(wù)案例

顏色塊文件

root@bogon:~ 2024-04-18 16:34:23# cat DefaultColor.py
#########################################################################
#    File Name: DefaultColor.py
#    Author: eight
#    Mail: 18847097110@163.com 
#    Created Time: Thu 11 Apr 2024 10:25:31 PM CST
#########################################################################
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Color:
        END = '\033[0m'  # normal
        BOLD = '\033[1m'  # bold
        RED = '\033[1;91m'  # red
        GREEN = '\033[1;92m'  # green
        ORANGE = '\033[1;93m'  # orange
        BLUE = '\033[1;94m'  # blue
        PURPLE = '\033[1;95m'  # purple
        UNDERLINE = '\033[4m'  # underline
        CYAN = '\033[1;96m'  # cyan
        GREY = '\033[1;97m'  # gray
        BR = '\033[1;97;41m'  # background red
        BG = '\033[1;97;42m'  # background green
        BY = '\033[1;97;43m'  # background yellow

備份代碼

 
#########################################################################
#    File Name: query_mysql.py
#    Author: eight
#    Mail: 18847097110@163.com 
#    Created Time: Thu 18 Apr 2024 11:12:26 AM CST
#########################################################################
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pymysql
import configparser
import os
from datetime import datetime
import DefaultColor
import subprocess
 
 
# 創(chuàng)建備份目錄
def mkdir():
        dir_path = os.getcwd()
        print("--------------------------------------------------------")
        print("當(dāng)前腳本工作目錄:", dir_path)
        mysql_backup_dir = "/opt/mysql_backup"
        print("--------------------------------------------------------")
        if not os.path.exists(mysql_backup_dir):
                os.makedirs(mysql_backup_dir)
        else:
                return f"數(shù)據(jù)庫(kù)備份目錄 '{mysql_backup_dir}' 已經(jīng)存在,跳過(guò)創(chuàng)建"
        return "數(shù)據(jù)庫(kù)備份目錄:" + DefaultColor.Color.GREEN + mysql_backup_dir + DefaultColor.Color.END + " 創(chuàng)建成功"
 
 
 
# 備份數(shù)據(jù)庫(kù) 
def backup(mysql_backup_dir):
        config = configparser.ConfigParser()
        config.read("config.ini")
        # 獲取配置信息
        host = config.get("MYSQL", "MYSQL_HOST")
        username = config.get("MYSQL", "MYSQL_USER")
        password = config.get("MYSQL", "MYSQL_PASSWORD")
        port = config.get("MYSQL", "MYSQL_PORT")
        db = config.get("MYSQL", "MYSQL_DB")
        current_datetime = datetime.now()
        formatted_datetime = current_datetime.strftime("%Y-%m-%d_%H-%M-%S")
        try:
                command = f'docker exec -it mysql-container /bin/bash -c "mysqldump -h {host} -u {username} -p{password} -P {port} -- {db} > {mysql_backup_dir}-{db}-{formatted_datetime}.sql"'
                subprocess.run(command, shell=True, check=True)
                
        except subprocess.CalledProcessError as e:
                print("Database backup failed:", e)
        return f"數(shù)據(jù)庫(kù):{db}備份完成: {mysql_backup_dir}-{db}-{formatted_datetime}.sql"
 
 
 
if __name__ == '__main__':
        backup_dir = mkdir()
        print(backup_dir)
        backup = backup("/opt/mysql_backup")
        print(backup)

此代碼如果是本地環(huán)境測(cè)試的話,邏輯是判斷當(dāng)前本地有沒有存儲(chǔ)備份數(shù)據(jù)的目錄,沒有則創(chuàng)建。

再利用subprocess執(zhí)行mysqldump命令,按照日期生成.sql文件

效果

 因?yàn)槭莇ocker環(huán)境,所以判斷當(dāng)前目錄是否存在,是判斷的宿主機(jī)上的,所以此代碼不是很嚴(yán)謹(jǐn)?shù)拇a,如果是本地部署的話,把mysqldump命令前面的  docker exec -it mysql-container /bin/bash -c  刪除掉即可。

這樣備份的腳本就實(shí)現(xiàn)了腳本預(yù)期效果:將數(shù)據(jù)庫(kù)備份到指定的目錄下,以日期區(qū)別sql文件

全量代碼(讀取配置和備份和查詢)

root@bogon:~ 2024-04-18 16:30:14# cat MysqlBackup.py 
#########################################################################
#    File Name: query_mysql.py
#    Author: eight
#    Mail: 18847097110@163.com 
#    Created Time: Thu 18 Apr 2024 11:12:26 AM CST
#########################################################################
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pymysql
import configparser
import os
from datetime import datetime
import DefaultColor
import subprocess
 
# 讀取mysql配置文件
def mysql_config():
        config = configparser.ConfigParser()
        config.read("config.ini")
 
        # 獲取配置信息
        host = config.get("MYSQL", "MYSQL_HOST")
        username = config.get("MYSQL", "MYSQL_USER")
        password = config.get("MYSQL", "MYSQL_PASSWORD")
        port = config.get("MYSQL", "MYSQL_PORT")
        db = config.get("MYSQL", "MYSQL_DB")
        print("--------------------------------------------------------")
        return f"主機(jī):{host}\t用戶名:{username}\t密碼:{password}\t端口:{port}\t數(shù)據(jù)庫(kù):{db}"
 
 
# 創(chuàng)建備份目錄
def mkdir():
        dir_path = os.getcwd()
        print("--------------------------------------------------------")
        print("當(dāng)前腳本工作目錄:", dir_path)
        mysql_backup_dir = "/opt/mysql_backup"
        print("--------------------------------------------------------")
        if not os.path.exists(mysql_backup_dir):
                os.makedirs(mysql_backup_dir)
        else:
                return f"數(shù)據(jù)庫(kù)備份目錄 '{mysql_backup_dir}' 已經(jīng)存在,跳過(guò)創(chuàng)建"
        return "數(shù)據(jù)庫(kù)備份目錄:" + DefaultColor.Color.GREEN + mysql_backup_dir + DefaultColor.Color.END + " 創(chuàng)建成功"
 
 
# 查詢sql語(yǔ)句
##def select():
#       config = configparser.ConfigParser()
#       config.read("config.ini")
#                    
#       # 獲取配置信息
#       host = config.get("MYSQL", "MYSQL_HOST")
#       username = config.get("MYSQL", "MYSQL_USER")
#       password = config.get("MYSQL", "MYSQL_PASSWORD")
#       port = config.get("MYSQL", "MYSQL_PORT")
#       db = config.get("MYSQL", "MYSQL_DB")
#       # 創(chuàng)建mysql連接信息
#       conn = pymysql.connect(host=host, user=username, password=password, port=int(port), db=db)
#       cur = conn.cursor()
#       # 執(zhí)行查詢語(yǔ)句
#       cur.execute("use docker;")
#       cur.execute("select * from DockerImages;")
#       print("查詢到的數(shù)據(jù)是:")
#       # 接收全部的返回結(jié)果行
#       result = cur.fetchall()
#       while True:
#               resp = cur.fetchone()
#               if resp is None:
#                       break
#       # 關(guān)閉查詢游標(biāo)
#       cur.close()
#       # 提交
#       conn.commit()
#       # 關(guān)閉鏈接,釋放計(jì)算機(jī)資源
#       conn.close()
#       return result
 
 
# 備份數(shù)據(jù)庫(kù) 
def backup(mysql_backup_dir):
        config = configparser.ConfigParser()
        config.read("config.ini")
        # 獲取配置信息
        host = config.get("MYSQL", "MYSQL_HOST")
        username = config.get("MYSQL", "MYSQL_USER")
        password = config.get("MYSQL", "MYSQL_PASSWORD")
        port = config.get("MYSQL", "MYSQL_PORT")
        db = config.get("MYSQL", "MYSQL_DB")
        current_datetime = datetime.now()
        formatted_datetime = current_datetime.strftime("%Y-%m-%d_%H-%M-%S")
        try:
                command = f'docker exec -it mysql-container /bin/bash -c "mysqldump -h {host} -u {username} -p{password} -P {port} -- {db} > {mysql_backup_dir}-{db}-{formatted_datetime}.sql"'
                subprocess.run(command, shell=True, check=True)
                
        except subprocess.CalledProcessError as e:
                print("Database backup failed:", e)
        return f"數(shù)據(jù)庫(kù):{db}備份完成: {mysql_backup_dir}-{db}-{formatted_datetime}.sql"
 
 
 
if __name__ == '__main__':
        #mysql_config = mysql_config()
        #print(mysql_config)
        backup_dir = mkdir()
        print(backup_dir)
 
        #sector = select()
        # 循環(huán)打印所有數(shù)據(jù),如果此代碼是封裝在函數(shù)內(nèi)部,那么使用return的話,只會(huì)輸出第一條數(shù)據(jù),所以要在外部調(diào)用
        #for row in sector:
        #       print(row)
        backup = backup("/opt/mysql_backup")
        print(backup)
root@bogon:~ 2024-04-18 16:30:18# 
root@bogon:~ 2024-04-18 16:30:32# 
root@bogon:~ 2024-04-18 16:30:32# cat MysqlBackup.py 
#########################################################################
#    File Name: query_mysql.py
#    Author: eight
#    Mail: 18847097110@163.com 
#    Created Time: Thu 18 Apr 2024 11:12:26 AM CST
#########################################################################
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pymysql
import configparser
import os
from datetime import datetime
import DefaultColor
import subprocess
 
# 讀取mysql配置文件
def mysql_config():
        config = configparser.ConfigParser()
        config.read("config.ini")
 
        # 獲取配置信息
        host = config.get("MYSQL", "MYSQL_HOST")
        username = config.get("MYSQL", "MYSQL_USER")
        password = config.get("MYSQL", "MYSQL_PASSWORD")
        port = config.get("MYSQL", "MYSQL_PORT")
        db = config.get("MYSQL", "MYSQL_DB")
        print("--------------------------------------------------------")
        return f"主機(jī):{host}\t用戶名:{username}\t密碼:{password}\t端口:{port}\t數(shù)據(jù)庫(kù):{db}"
 
 
# 創(chuàng)建備份目錄
def mkdir():
        dir_path = os.getcwd()
        print("--------------------------------------------------------")
        print("當(dāng)前腳本工作目錄:", dir_path)
        mysql_backup_dir = "/opt/mysql_backup"
        print("--------------------------------------------------------")
        if not os.path.exists(mysql_backup_dir):
                os.makedirs(mysql_backup_dir)
        else:
                return f"數(shù)據(jù)庫(kù)備份目錄 '{mysql_backup_dir}' 已經(jīng)存在,跳過(guò)創(chuàng)建"
        return "數(shù)據(jù)庫(kù)備份目錄:" + DefaultColor.Color.GREEN + mysql_backup_dir + DefaultColor.Color.END + " 創(chuàng)建成功"
 
 
# 查詢sql語(yǔ)句
def select():
        config = configparser.ConfigParser()
        config.read("config.ini")
                     
        # 獲取配置信息
        host = config.get("MYSQL", "MYSQL_HOST")
        username = config.get("MYSQL", "MYSQL_USER")
        password = config.get("MYSQL", "MYSQL_PASSWORD")
        port = config.get("MYSQL", "MYSQL_PORT")
        db = config.get("MYSQL", "MYSQL_DB")
        # 創(chuàng)建mysql連接信息
        conn = pymysql.connect(host=host, user=username, password=password, port=int(port), db=db)
        cur = conn.cursor()
        # 執(zhí)行查詢語(yǔ)句
        cur.execute("use docker;")
        cur.execute("select * from DockerImages;")
        print("查詢到的數(shù)據(jù)是:")
        # 接收全部的返回結(jié)果行
        result = cur.fetchall()
        while True:
                resp = cur.fetchone()
                if resp is None:
                        break
        # 關(guān)閉查詢游標(biāo)
        cur.close()
        # 提交
        conn.commit()
        # 關(guān)閉鏈接,釋放計(jì)算機(jī)資源
        conn.close()
        return result
 
 
# 備份數(shù)據(jù)庫(kù) 
def backup(mysql_backup_dir):
        config = configparser.ConfigParser()
        config.read("config.ini")
        # 獲取配置信息
        host = config.get("MYSQL", "MYSQL_HOST")
        username = config.get("MYSQL", "MYSQL_USER")
        password = config.get("MYSQL", "MYSQL_PASSWORD")
        port = config.get("MYSQL", "MYSQL_PORT")
        db = config.get("MYSQL", "MYSQL_DB")
        current_datetime = datetime.now()
        formatted_datetime = current_datetime.strftime("%Y-%m-%d_%H-%M-%S")
        try:
                command = f'docker exec -it mysql-container /bin/bash -c "mysqldump -h {host} -u {username} -p{password} -P {port} -- {db} > {mysql_backup_dir}-{db}-{formatted_datetime}.sql"'
                subprocess.run(command, shell=True, check=True)
                
        except subprocess.CalledProcessError as e:
                print("Database backup failed:", e)
        return f"數(shù)據(jù)庫(kù):{db}備份完成: {mysql_backup_dir}-{db}-{formatted_datetime}.sql"
 
 
 
if __name__ == '__main__':
        mysql_config = mysql_config()
        print(mysql_config)
        backup_dir = mkdir()
        print(backup_dir)
 
        sector = select()
        #循環(huán)打印所有數(shù)據(jù),如果此代碼是封裝在函數(shù)內(nèi)部,那么使用return的話,只會(huì)輸出第一條數(shù)據(jù),所以要在外部調(diào)用
        for row in sector:
                print(row)
        backup = backup("/opt/mysql_backup")
        print(backup)

效果

到此這篇關(guān)于Python基于docker部署的Mysql備份查詢腳本的文章就介紹到這了,更多相關(guān)Python Mysql備份查詢腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python運(yùn)算符的使用簡(jiǎn)單介紹

    Python運(yùn)算符的使用簡(jiǎn)單介紹

    這篇文章主要介紹了Python運(yùn)算符的使用簡(jiǎn)單介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • python生成以及打開json、csv和txt文件的實(shí)例

    python生成以及打開json、csv和txt文件的實(shí)例

    今天小編就為大家分享一篇python生成以及打開json、csv和txt文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • python執(zhí)行js腳本報(bào)錯(cuò)CryptoJS is not defined問題

    python執(zhí)行js腳本報(bào)錯(cuò)CryptoJS is not defined問題

    這篇文章主要介紹了python執(zhí)行js腳本報(bào)錯(cuò)CryptoJS is not defined問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Python線性擬合實(shí)現(xiàn)函數(shù)與用法示例

    Python線性擬合實(shí)現(xiàn)函數(shù)與用法示例

    這篇文章主要介紹了Python線性擬合實(shí)現(xiàn)函數(shù)與用法,結(jié)合實(shí)例形式分析了Python使用線性擬合算法與不使用線性擬合算法的相關(guān)算法操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python實(shí)現(xiàn)cpu并行運(yùn)算的兩種方式

    Python實(shí)現(xiàn)cpu并行運(yùn)算的兩種方式

    Python?提供了多種庫(kù)來(lái)支持?CPU?并行運(yùn)算,其中最常用的是?multiprocessing?和?mpi4py?模塊,這兩個(gè)庫(kù)允許你在單臺(tái)機(jī)器上利用多核處理器提高程序的性能,本文通過(guò)代碼示例給大家詳細(xì)的介紹了這兩種方法,需要的朋友可以參考下
    2024-08-08
  • Python中圖像通用操作的實(shí)現(xiàn)代碼

    Python中圖像通用操作的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Python中圖像通用操作的實(shí)現(xiàn),例如:圖像旋轉(zhuǎn)、圖像縮放等,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-07-07
  • Python如何給你的程序做性能測(cè)試

    Python如何給你的程序做性能測(cè)試

    這篇文章主要介紹了Python如何給你的程序做性能測(cè)試,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • python繪制詞云圖最全教程(自定義png形狀、指定字體、顏色)

    python繪制詞云圖最全教程(自定義png形狀、指定字體、顏色)

    詞云圖是一種直觀的方式來(lái)展示文本數(shù)據(jù),它易于理解,能展示出詞語(yǔ)的頻率使用情況,對(duì)于文本分析非常有用,這篇文章主要給大家介紹了python繪制詞云圖(自定義png形狀、指定字體、顏色)的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • Python: glob匹配文件的操作

    Python: glob匹配文件的操作

    這篇文章主要介紹了Python: glob匹配文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Python調(diào)用騰訊API進(jìn)行人像動(dòng)漫化效果實(shí)例

    Python調(diào)用騰訊API進(jìn)行人像動(dòng)漫化效果實(shí)例

    最近上網(wǎng)的時(shí)候看到了一個(gè)有趣的東西,叫做人物動(dòng)漫化,嘗試著用python實(shí)現(xiàn)了,所以下面這篇文章主要給大家介紹了關(guān)于Python調(diào)用騰訊API進(jìn)行人像動(dòng)漫化效果的相關(guān)資料,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

邯郸县| 禹城市| 香格里拉县| 湛江市| 安远县| 陇川县| 大田县| 游戏| 鄄城县| 务川| 广丰县| 临洮县| 五家渠市| 邓州市| 福海县| 壶关县| 周至县| 灵璧县| 镇巴县| 柳河县| 孟州市| 福海县| 尼玛县| 昭觉县| 卓资县| 贡嘎县| 阿合奇县| 峨眉山市| 芜湖市| 应用必备| 定远县| 山阴县| 南皮县| 玛多县| 乐至县| 韶山市| 内黄县| 泰兴市| 图们市| 翼城县| 黔南|