当前位置:   article > 正文

Python实现对MsSqlServer数据库定时自动备份、压缩、上传到minio_python如何自动备份数据库bak文件

python如何自动备份数据库bak文件
  1. from datetime import datetime
  2. import time
  3. import threading
  4. from queue import Queue
  5. from queue import Empty
  6. import pymssql
  7. import zipfile
  8. import os
  9. from minio import Minio
  10. from minio.error import S3Error
  11. import schedule
  12. class SqlBak(object):
  13. def init(self):
  14. self.connect = pymssql.connect('127.0.0.1', 'cssoft', 'cssoft', 'master') #建立连接
  15. self.db_name = "abs_data"
  16. self.db_path = "c:\\sqlbak\\abs\\"
  17. self.bak_name = "c:\\sqlbak\\abs\\abs_data.bak"
  18. self.zip_name = "abs_data.zip"
  19. self.zip_path = "c:\\sqlbak\\abs_data.zip"
  20. if self.connect:
  21. print("连接成功!")
  22. def bak(self):
  23. print("开始备份!")
  24. cursor = self.connect.cursor()
  25. self.connect.autocommit(True)
  26. cursor.execute(f"BACKUP DATABASE {self.db_name} TO DISK = N'{self.bak_name}' WITH INIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT")
  27. self.connect.autocommit(False)
  28. print("备份成功!")
  29. self.zip_folder(self.db_path, self.zip_path)
  30. pass
  31. def zip_folder(self,folder_path, output_path):
  32. print("开始压缩!")
  33. zipf = zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED)
  34. for root, dirs, files in os.walk(folder_path):
  35. for file in files:
  36. zipf.write(os.path.join(root, file))
  37. zipf.close()
  38. print("压缩成功!")
  39. def minio(self):
  40. print("开始上传!")
  41. client = Minio(
  42. "minio.xxx.com.cn:9000",
  43. access_key="root",
  44. secret_key="xxxxxx",
  45. secure=False
  46. )
  47. found = client.bucket_exists("sqlbak")
  48. if not found:
  49. client.make_bucket("sqlbak")
  50. else:
  51. print("Bucket 'sqlbak' already exists")
  52. client.fput_object("sqlbak", self.zip_name, self.zip_path)
  53. print("上传成功")
  54. def job():
  55. try:
  56. print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
  57. sqlbak = SqlBak()
  58. sqlbak.init()
  59. sqlbak.bak()
  60. sqlbak.minio()
  61. except Exception as reason:
  62. print(reason)
  63. schedule.every().day.at('23:20').do(job); # 每天在 23:20 时间点运行 job 函数
  64. print("计划任务已启动,每日23:20")
  65. while True:
  66. schedule.run_pending()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/954247
推荐阅读
相关标签
  

闽ICP备14008679号