python 读取mysql数据至csv文件中,并发送邮件
test
代码:
#coding:utf-8
'''
Created on 2019年2月18日 @author: Administrator
'''
import ConfigParser
import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import MySQLdb
import csv
import codecs
import datetime import sys
reload(sys)
sys.setdefaultencoding('utf8') datenow = datetime.datetime.now().strftime("%Y%m%d") def read_mysql_to_csv(srcDbConn, fileName):
with codecs.open(filename=fileName, mode='w', encoding='GB2312') as f: #encoding='GB2312' 保证写入csv的中文不是乱码
write = csv.writer(f, dialect='excel')
srcCursor = srcDbConn.cursor()
sql = "SELECT gscode,ymd,gpcode,f1,f2,f3 FROM quant_stk_calc_d_wxcpnew WHERE gscode = 'wxcpnew' AND ymd = {0} and (f1 > 0 or f2 > 0)".format(datenow)
count = srcCursor.execute(sql)
print count
data = srcCursor.fetchall()
gscode = '指标名称'
ymd = '信号日期'
gpcode = '股票代码'
B = 'B点'
S = 'S点'
BStar = 'B点星级'
title = (gscode, ymd, gpcode, B, S, BStar)
write.writerow(title)
for row in data:
print row
write.writerow(row) def send_mail(fileName):
#读取配置文件
config = ConfigParser.SafeConfigParser()
batRunningPath = os.path.dirname(os.sys.executable)
batPath = os.path.dirname(os.sys.path[0])
if os.path.exists(batPath + "\SendEmai\config.ini"): #配置文件config.ini的路径
config.read(batPath + "\SendEmai\config.ini")
else:
config.read(batRunningPath + "\config.ini") mail_host = config.get("email", "mail_host")
receveAddr = config.get("email", "mail_to_list")
ccAddr = config.get("email", "mail_cc_list") mail_to_list = receveAddr.split(",") #收件人
mail_cc_list = ccAddr.split(",") #抄送 mail_user = config.get("email", "mail_user") #发件人
mail_pass = config.get("email", "mail_pass") #发件人密码 mail_sub = "附件测试" #邮件标题
mail_content = "" #正文内容 #创建一个带附件的实例
msg = MIMEMultipart() #构造附件1,传送当前目录下 test.txt 文件
att1 = MIMEText(open(fileName, 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="{0}"'.format(fileName)
msg.attach(att1) #邮件正文内容
msg.attach(MIMEText(mail_content,'plain', 'utf-8')) msg['Subject'] = Header(mail_sub, 'utf-8')
msg['From'] = mail_user
msg['To'] = ",".join(mail_to_list)
msg['Cc'] = ",".join(mail_cc_list)
receive = mail_to_list
receive.extend(mail_cc_list)
try:
server = smtplib.SMTP_SSL(mail_host)
server.login(mail_user,mail_pass)
server.sendmail(mail_user,receive,msg.as_string())
server.close()
except Exception, e:
print str(e) if __name__ == '__main__': charset = "utf8"
#源数据库
#quant 的数据库
srcHost_Quant = "172.16.8.110"
srcUse_Quant = "root"
srcPasswd_Quant = "123456"
srcDb_Quant = "quant_test" srcDbConn_Quant = MySQLdb.connect(srcHost_Quant, srcUse_Quant, srcPasswd_Quant, srcDb_Quant, charset=charset)
fileName = "WXCP_BS_{0}.csv".format(datenow) read_mysql_to_csv(srcDbConn_Quant, fileName)
send_mail(fileName)
配置文件:config.ini
参见:https://blog.csdn.net/qq_33689414/article/details/78310689
python 读取mysql数据至csv文件中,并发送邮件的更多相关文章
- C# 将List中的数据导入csv文件中
//http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中 将数 ...
- Jmeter beanshell把数据写入csv文件中,最后清除csv数据
有时候我们需要使用jmeter去结合csv文件去做一些简单的数据驱动处理: 例如把数据库数据黏贴到csv文件中或者把网页上的数据填入到csv文件中: 直接我一般是用手自己黏贴复制过csv文件中,比较麻 ...
- python 读取二进制数据到可变缓冲区中
想直接读取二进制数据到一个可变缓冲区中,而不需要做任何的中间复制操作.或者你想原地修改数据并将它写回到一个文件中去. 为了读取数据到一个可变数组中,使用文件对象的readinto() 方法.比如 im ...
- Jmeter自动化测试 数据驱动测试,将数据存入csv文件中来调用,或将数据存在DB中进行调用
1. 将测试的用例名称,测试请求方式,测试链接,预置数据,断言等都放到excel中,然后转成csv格式,在用Jmeter带的csv数据配置文件导入 运行之前将线程组中配置,线程数设置为1,循环的次数设 ...
- python提取百万数据到csv文件
转自:http://www.2cto.com/kf/201311/258112.html 今天有需求,需要把系统所有用户注册的id和邮箱等信息导出来提供给他们,在mysql里面count了下,大概有3 ...
- SQL SERVER利用BCP命令在命令行下导出数据到csv文件中
bcp "select * from (DBNAME).dbo.qt_trace where User_1 is not null" queryout c:\%date:~6,4% ...
- MySQL添加CSV文件中的数据
一.MySQL添加csv数据 此问题是前几天整理数据的时候碰到的,数据存在 CSV文件中(200多万记录),通过python 往数据库中导入太慢了,后来使用MySQL 中自带的命令 LOAD DATA ...
- python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件
python操作txt文件中数据教程[3]-python读取文件夹中所有txt文件并将数据转为csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 python操作txt文件中 ...
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
CSV文件数据如何读取.导入.导出到新的CSV文件中以及CSV文件的创建 一.csv文件的创建 (1)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...
随机推荐
- SpringMVC的请求处理流程
- NOIP考纲总结+NOIP考前经验谈
首先来一张图,很直观(截止到2012年数据) 下面是收集的一些,我改了一下 红色加粗表示特别重要,必须掌握 绿色加粗表示最好掌握,可能性不是很大,但是某些可以提高程序效率 高精度 a.加法 b.减法 ...
- BZOJ4738 : 汽水
二分答案$mid$,若存在一条路径满足$|ave-k|<mid$,则答案至多为$mid-1$. 若$ave\leq k$,则$\sum(w-k)\leq 0$,且$\sum(k-w-mid)&l ...
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第4章编程练习5
#include <iostream>using namespace std;struct CandyBar{ char kind[20]; float weight; int calor ...
- UIButton 设置阴影效果
UIButton有的时候需要用代码做样式调整 其中就包括添加阴影 如下图 中登陆 按钮 此时需要考虑对button的layer进行设置 button layer 设置以下几个属性 cornerRadi ...
- ggplot2 作图
ggplot2 作图 ggplot2是著名的R语言作图工具包,gg为Grammar of Graphics的缩写,体现了结构化作图的思想.ggplot2根据图层来作图是非常优秀的思想,官方文档在这里 ...
- Docker 常用命令(四)
1. 查看容器中的进程信息: docker top 772d23 查看容器的详细信息: docker inspect 772d23 持续更新日志 docker logs -f 7732dx
- HashMap问答
一.什么是HashMap二.HashMap的继承关系三.HashMap数据结构四.HashMap查找.添加元素是怎样的五.什么是Hash碰撞六.HashMap是线程安全的吗?七.HashMap怎样处理 ...
- JS数字指定长度不足前补零的实现
问题描述: 要求输出的数字长度是固定的,如长度为2,数字为1,则输出01,即不够位数就在之前补足0. 解决方法: 方法1 function fn1(num, length) { ret ...
- CentOS7 yum 安装与配置MySQL5.7
安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:https://dev.mysql.com/downloads/rep ...