如何将实际位置更改为临时位置,在MySQL的Python电子邮件表的csv文件中添加标题并删除空间?

2024-04-25 21:13:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python代码,可以运行MySQL查询并发送带有csv附件的电子邮件。我需要做以下三个改变。有人能帮我吗

  • 我需要将实际位置更改为临时位置(我累了,它会给我一个错误,然后我将其更改为实际位置)
  • 我的结果csv文件上没有标题。如何在结果csv上添加标题
  • 它把一个空的raw放在每个raw之间,我如何删除它呢

代码-

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()

样本结果图像-

enter image description here

多谢各位


Tags: csvtextfromimportdateserveremailmy
1条回答
网友
1楼 · 发布于 2024-04-25 21:13:43

要避免空行,请尝试以下操作


fp = open('C:\#Emailproject/emailtest.csv', 'w', newline='')


添加标题行的步骤

attach_file.writerow(["date", "address", "col3"])
attach_file.writerows(databases)

相关问题 更多 >