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)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...
随机推荐
- MySql中的事务、JDBC事务、事务隔离级别
一.MySql事务 之前在Oracle中已经学习过事务了,这个东西就是这个东西,但是在MySql中用法还是有一点不同,正好再次回顾一下. 先看看MySql中的事务,默认情况下,每执行一条SQL语句,都 ...
- UOJ#132&bzoj4200[Noi2015]小园丁与老司机
看,这是一个传送门 Part A 把坐标离散化,按照纵坐标为第一关键字,横坐标为第二关键字排序 以$f_i$记录来到$i$这个点最多经过点数,那么答案显而易见就是$f_i$加上该层点数 转移的话就是分 ...
- 自己遇到过的出现java.lang.StackOverflowError的原因
public static JSONArray geth24Weather(String result) {//获取当天24小时以及第二天的天气结果对象 JSONObject fromO ...
- redis:set集合类型的操作(无序集合)
1. set集合类型的操作(无序集合) 集合具有无序性(没有顺序).确定性(描述是确定的).唯一性(没有重复的元素) 1.1. sadd key member [member ...] 语法:sadd ...
- 深入理解JVM(1)——JVM内存模型
Java虚拟机的内存空间分为五个部分,分别是: 程序计数器: Java虚拟机栈 本地方法栈 堆 方法区 接下来对这五部分分别进行详细的介绍 1.程序计数器: a)什么是程序计数器:程序计数器是内存中的 ...
- HDU 5985 Lucky Coins 数学
Lucky Coins 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5985 Description Bob has collected a lot ...
- JAVA自学笔记04
JAVA自学笔记04 1.switch语句 1)格式:switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; - default: 语句体n+ ...
- JIRA、Confluence中文官方技术博客
JIRA.Confluence中文官方技术博客 http://blog.csdn.net/atlassian2013
- iOS:UIButton扩大按钮的响应区域
一.介绍 在开发中有时会遇见设计图里按钮设计的特别小,这时会用到手动扩大UIButton的响应范围 二.方式 下面有两个解决办法: 第一种方法:创建一个类目:UIButton+EnlargeTouch ...
- 网络编程之 keepalive(zz)
link1: http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ link2: http://dev.csdn.net/article/849 ...