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

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

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值