python定时导出已发送文件_python定时发送数据库备份文件到邮箱
下面的代码能实现基本的功能。有一些参数需要改成自己的,比如数据库连接参数和邮箱相关的参数。
#定时相关
import datetime
import schedule #定时器
import threading#多线程
#数据库相关
import time
import csv
import codecs
import pymysql#mysql
#邮件相关
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import smtplib
import os,sys
Last_backup_date=datetime.datetime.now()+datetime.timedelta(days=-1);#最后备份日期(初始值为当前时间减去1天)
#time_array=[13,20]#每天的备份时间(24小时制,例:下午1点30分备份【time_array=[13,30]】)
backups=True#可以备份
tim=100#循环的时间
sql='select * from ?'
mail_from='**********@qq.com' #发送方邮箱
mail_pass='**********' #填入发送方邮箱的授权码
to_list='**********@qq.com' #收件人邮箱
def sendmail_backups(mail_from,to_list,subject,content,filename):#发件人,收件人,主题,正文,附件
msg = MIMEMultipart('related') ##采用related定义内嵌资源的邮件体
msgtext = MIMEText(content,_subtype='plain',_charset='utf-8') ##_subtype有plain,html等格式,避免使用错误
msg.attach(msgtext)
attach = MIMEText(open(filename,'rb').read(), 'base64', 'utf-8')
attach["Content-Type"] = 'application/octet-stream'
attach.add_header("Content-Disposition", "attachment", filename=("gbk", "", filename))
msg.attach(attach)
msg['Subject'] = subject
msg['From'] = mail_from
msg['To'] = to_list
return msg
def sendMail(msg):
try:
server = smtplib.SMTP_SSL("smtp.qq.com",465)
print ('连接邮箱服务器成功')
server.login(mail_from, mail_pass)
print ('登陆成功')
print ('发送邮件中')
server.sendmail(mail_from, msg['To'], msg.as_string())
server.quit() ##断开smtp连接
print ("邮件发送成功")
except Exception.e:
print ("失败"+str(e))
def get_conn():
conn = pymysql.connect(host='数据库主机',port=端口,user='用户名',password='密码',db='数据库',charset='utf8')
return conn
def query_all(cur,sql,args):#执行sql
cur.execute(sql,args)
return cur.fetchall()
def read_mysql_to_csv(filename):#获取备份CSV文件
print(filename)
with codecs.open(filename=filename,mode='w',encoding='utf-8') as f:
write=csv.writer(f,dialect='excel')
conn=get_conn()
cur=conn.cursor()
results=query_all(cur = cur, sql=sql, args=None)
for result in results:
#print(result)
write.writerow(result)
msg=sendmail_backups(mail_from,to_list,str(datetime.datetime.now().date())+'【备份邮件】','这是'+sql+'语句的数据库备份文件',filename)
sendMail(msg)
def job():#备份任务
global backups
global Last_backup_date
backups=False#锁定备份
sname=str(datetime.datetime.now().date())+'.csv'
read_mysql_to_csv(sname)
print(str(datetime.datetime.now())+' '+sname+' 备份成功!')
Last_backup_date=datetime.datetime.now()
backups=True#解锁备份
def job_task():
if Last_backup_date.date()!=datetime.datetime.now().date():#最后备份日期不是今天
if backups:
threading.Thread(target=job).start()
else:
print('正在执行备份,备份任务锁定中!')
else:
print('今天已备份,无需再次备份!')
def run():
job_task()
schedule.every(tim).seconds.do(job_task)
while True:
schedule.run_pending()
if __name__ == '__main__':
print('程序运行时间:'+str(datetime.datetime.now()))
run()
效果图
更新:刚刚发现上面写的有问题,会大量占用cpu资源,导致系统卡顿。修改成下面的,上面的代码我也就不删了,供其它人参考。
def run():
while True:
job_task()
time.sleep(tim)
python定时导出已发送文件_python定时发送数据库备份文件到邮箱相关推荐
- 怎么将导出的sql文件再次导入到数据库?
怎么将导出的sql文件再次导入到数据库? 数据库用起来很方便,可是更换电脑的时候海量数据怎么带走也是个麻烦,导出为sql文件增强了数据的可移植性.sql文件导出后怎么导入数据库呢?本文以Navicat ...
- python发送文件_python:socket传输大文件
文件可以传输,但是对比传输前后的文件:socket_test.txt,末尾有一些不一致 服务端代码: #!/usr/bin/python # -*- coding: utf-8 -*- import ...
- python发送文件_Python发送邮件(最全)
简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件. Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听 ...
- python 抓包 上传 文件_Python接口测试文件上传实例解析
接口测试中,上传文件的测试场景非常常见.例如:上传头像(图片).上传文件.上传视频等.下面以一个上传图片的例子为大家讲解如何通过 python 测试上传文件接口. 首先通过抓包分析上传文件接口的请求参 ...
- python调用接口上传文件_python接口自动化7-post文件上传
前言 文件上传在我们软件是不可少的,最多的使用是体现在我们后台,当然我们前台也会有.但是了解过怎样上传文件吗?这篇我们以禅道文档-创建文档,上传文件为例. post请求中的:Content-Type: ...
- python将字符串写入txt文件_python将字符串以utf-8格式保存在txt文件中的方法
python将字符串以utf-8格式保存在txt文件中的方法 如下所示: #ltp_data 字符串 写进777.txt 1. def save(filename, contents): fh = o ...
- python保存数据到本地文件_python保存数据到本地文件的方法
python保存数据到本地文件的方法 1.保存列表为.txt文件 #1/list写入txt ipTable = ['158.59.194.213', '18.9.14.13', '58.59.14.2 ...
- python能封装成exe文件_python文件封装成*.exe文件(单文件和多文件)
环境:win10 64位 python3.7 单*.py文件打包 Python GUI:程序打包为exe 一.安装Pyinstaller,命令pip install Pyinstaller,(大写的 ...
- python 边读边写文件_Python 文件读写
Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...
- python编写请求参数带文件_python requests 库请求带有文件参数的接口实例
有些接口参数是一个文件格式,比如fiddler 抓包参数如下显示 这个接口的 form-data fiddler 显示的和不带文件参数的接口有明显区别,显示的不是简单的键值对,所以我们也不能只通过 d ...
最新文章
- c++ int转unsigned int_mysql中int、bigint、smallint 和 tinyint的区别详细介绍
- 此三层非彼三层——MVCamp;UBD
- HDU1016(DFS)
- css3 pointer-events:none 允许点击穿透
- 谷歌街景新功能——帮警方抓毒贩
- 使用 Tye 辅助开发 k8s 应用竟如此简单(三)
- 计算机应用基础教学改革参考文献,关于计算机应用基础论文范文资料 与计算机应用基础课程教学改革分析有关论文参考文献...
- 安卓采集摄像头画面生成MP4文件
- Android什么时候用抽象类什么时候用接口
- 重新签名IOS .ipa文件 (包含第三方框架和插件)
- 关于软件工程的目的与意义
- 【新书推荐】杰夫·惠勒:帝泉传奇系列(共3册)
- 一信通短信接口对接_短信接口对接流程
- 二、RPA机器人开发基础
- AP 产品成本计算与传统成本计算
- 学习python需要多长时间?你知道吗?
- 基于Python(Tkinter)实现(图形界面)小说阅读器【100010450】
- UA OPTI544 量子光学4 补充:Parity Operator
- java使用数组实现Map集合
- 字符串最大跨距(c++)
热门文章
- JProfiler分析内存泄漏
- H3C交换机配件RS232配置线(DB9针转RJ45)
- find命令结合exec和xargs使用的区别
- PCIE的DMA和PIO介绍
- MYSQL异常处理日志:主从库同步延迟时间过长的分析
- 解决 Error:No suitable device found: no device found for connection System eth0
- 在linux上使用scp命令拷贝一个目录到另一台服务器的时候报not a regular file错误的解决办法...
- poj 3666 河南省第七届程序设计D题(山区修路)
- 企业级的Java快速开发平台,首选iMatrix平台。
- Android APK 签名问题