我有一个 python 代码,可以运行 MySQL 查询并发送带有 csv 附件的电子邮件。我需要做出以下三个改变。有人可以帮我解决这个问题吗?
- 我需要将实际位置更改为临时位置(我累了,它给了我一个错误,然后我将其更改为真实位置)
- 我的结果 csv 文件中没有标题。如何在结果 csv 上添加标题?
- 它在每个原始数据之间放置了一个空原始数据,我该如何删除它。
代码 -
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
import mysql.connector
import csv
my_db = mysql.connector.connect(
host="localhost",
user="root",
passwd="admin",
database="simplymacstaging"
)
my_cursor = my_db.cursor()
my_cursor.execute("SELECT CONVERT(DateCreated, Date) 'Date', StoreName, ROUND(sum(TotalCost), 2) 'TotalCost' "
"FROM simplymacstaging.ajdustmenthistory WHERE ReasonCode = 'Negligence - Service' AND "
"CONVERT(DateCreated, Date) >= '2019-02-03' GROUP by StoreName, Date")
databases = my_cursor.fetchall()
fp = open('C:\#Emailproject/emailtest.csv', 'w')
attach_file = csv.writer(fp)
attach_file.writerows(databases)
fp.close()
# My email
fromaddr = "******************@gmail.com"
# EMAIL ADDRESS YOU SEND TO
toaddr = "**********@gmail.com"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Test Email Data" # SUBJECT OF THE EMAIL
body = "Hello, Please see the attched report for week. Thank you, ****"
msg.attach(MIMEText(body, 'plain'))
filename = "Test Email.csv" # NAME OF THE FILE WITH ITS EXTENSION
attachment = open("C:\#Emailproject/emailtest.csv", "rb") # PATH OF THE FILE
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(part)
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, "***********") # YOUR PASSWORD
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
示例结果图像 -
非常感谢
最佳答案
要避免空行,请尝试此操作
fp = open('C:\#Emailproject/emailtest.csv', 'w', newline='')
添加标题行
attach_file.writerow(["date", "address", "col3"])
attach_file.writerows(databases)
关于python - 如何将实际位置更改为临时位置、添加标题并删除 MySQL 中 Python 电子邮件表上的 csv 文件中的空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55853985/