python2实现数据库表定时全量同步sftp

python2实现数据库表定时全量同步sftp

需求

周边系统需要通过sftp接口,将本系统数据库的8张表吐给sftp,文件名为txt,提供的字段用#号分隔(逗号存在分隔不开的情况),8张表采用全量每天同步。

环境

操作系统centos7.9
自带的python2.7.5,
python2存在缺少MySqldb、paramiko模块情况,参考上两篇博客进行模块安装

脚本编写

本地环境编写脚本auto_table_up_sftp_v2.py代码如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import MySQLdb
import paramiko
from datetime import datetime
import os# MySQL数据库连接信息
db_host = '192.168.2.206'
db_user = 'root'
db_password = 'ze1bw0,7E[9V'
db_name = 'mysql'
table_list = ['user','db','event',]#生成的文件列表信息
file_list = []#创建生成文件的目录
directory = './AuditToPass'
# 检查目录是否存在,如果不存在则创建
if not os.path.exists(directory):os.makedirs(directory)# SFTP连接信息
sftp_host = '192.168.2.139'
sftp_user = 'ynsftp'
sftp_password = '1'
sftp_directory = './'# 获取当前日期
current_date = datetime.now().strftime('%Y-%m-%d')# 连接MySQL数据库
conn = MySQLdb.connect(host=db_host, user=db_user, passwd=db_password, db=db_name)
cursor = conn.cursor()for table_name in table_list:# 从MySQL数据库中读取数据query = "SELECT * FROM {}".format(table_name)cursor.execute(query)rows = cursor.fetchall()# 将数据写入到txt文件txt_filename = "{}{}.txt".format(table_name,current_date)with open('./AuditToPass/' + txt_filename, 'w') as file:for row in rows:file.write('#'.join(str(col) for col in row) + '\n')print('生成文件{}成功'.format(txt_filename))file_list.append(txt_filename)print('{}添加到待上传文件列表成功'.format(txt_filename))
# 关闭MySQL连接
cursor.close()
conn.close()for file_name in file_list:# 上传txt文件到SFTP目录transport = paramiko.Transport((sftp_host, 22))transport.connect(username=sftp_user, password=sftp_password)sftp = paramiko.SFTPClient.from_transport(transport)sftp.put('./AuditToPass/' + file_name, sftp_directory + file_name)print('上传文件{}成功'.format(file_name))# 关闭SFTP连接
sftp.close()
transport.close()#清理本地文件
print('开始清理本地的文件列表{}'.format(file_list))
for file_name1 in file_list:os.remove('./AuditToPass/' + file_name1)print('清理本地文件{}成功'.format(file_name1))

创建定时任务

[root@localhost ~]# crontab -l
10 16 * * * python /root/auto_table_up_sftp/auto_table_up_sftp_v2.py >> /root/auto_table_up_sftp/auto_table_up_sftp.log

实现结果如下
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/413141.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS应用开发者初级认证试题库(鸿蒙)

目录 考试链接: 流程: 选择: 判断: 单选: 多选: 考试链接: 开发者能力认证-职业认证-鸿蒙能力认证-华为开发者学堂 (huawei.com)https://developer.huawei.com/consumer/cn/training/dev-…

一款自动化提权工具

免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。…

k8s学习-Deployment

Kubernetes通过各种Controller来管理Pod的生命周期 。 为了满足不同业 务 景 , Kubernetes 开发了Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等多种Controller。我们⾸先学习最常用Deployment。 1.1 Kubectl命令直接创建 第一种是通过kubectl命令直接…

【JavaEE进阶】 关于应用分层

文章目录 🎋序言🍃什么是应⽤分层🎍为什么需要应⽤分层🍀如何分层(三层架构)🎄MVC和三层架构的区别和联系🌳什么是高内聚低耦合⭕总结 🎋序言 在我们进行项目开发时我们如果一股脑将所有代码都…

使用Qt连接scrcpy-server控制手机

Qt连接scrcpy-server 测试环境如何启动scrcpy-server1. 连接设备2. 推送scrcpy-server到手机上3. 建立Adb隧道连接4. 启动服务5. 关闭服务 使用QTcpServer与scrcpy-server建立连接建立连接并视频推流完整流程1. 开启视频推流过程2. 关闭视频推流过程 视频流的解码1. 数据包协议…

文件上传进阶(三)值得关注的3种类型漏洞

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 0、前置说明和绕过原理 0.1、环境说明 请移步《文件上…

高效视频剪辑:视频合并让视频焕然一新,添加背景音乐更动听

随着社交媒体和数字内容的普及,视频剪辑已成为一项常用的技能。除了基本的剪辑技巧外,添加合适的背景音乐也是提升视频质量的方法。下面来看云炫AI智剪的高效视频剪辑技巧——如何批量合并视频,添加动听的背景音乐。 视频合并后的效果展示&a…

【Leetcode】277.搜寻名人

一、题目 1、题目描述 假设你是一个专业的狗仔,参加了一个 n 人派对,其中每个人被从 0 到 n - 1 标号。在这个派对人群当中可能存在一位 “名人”。所谓 “名人” 的定义是:其他所有 n - 1 个人都认识他/她,而他/她并不认识其他任何人。 现在你想要确认这个 “名人” 是…

SpringCloud之Nacos

一、微服务介绍 1. 什么是微服务 2014年,Martin Fowler(马丁福勒 ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用 HTTP API 通信。同时服务会使用最小的规模…

MedSegDiff-V2: Diffusion based Medical Image Segmentation with Transformer

MedSegDiff-V2:基于变压器的扩散医学图像分割 摘要 扩散概率模型(Diffusion Probabilistic Model, DPM)最近在计算机视觉领域获得了广泛的应用,这要归功于它的图像生成应用,如Imagen、Latent Diffusion Models和Stable Diffusion,这些应用已…

MySQL(视图,存储函数,存储过程)

作业1: 作业实现: 首先创建学生表,课程表,以及学生选课表。 CREATE TABLE Student (Sno INT PRIMARY KEY,Sname VARCHAR(20) NOT NULL,Ssex CHAR(1) CHECK (Ssex IN (男, 女)),Sage INT,SDept VARCHAR(20) DEFAULT 计算机 );CRE…

QT-QML2048小游戏

QT-QML2048小游戏 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 import QtQuick 2.2 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import QtQuick.Dialogs 1.1 import QtQuick.Window 2.1 import "2048.js" as MyScriptAp…