如何将实际位置更改为临时位置,在来自 MySQL 的 Python 电子邮件 table 的 csv 文件中添加 headers 并删除 space?
How to change actual location to temporary, add headers and remove space in csv file on Python Email table from MySQL?
我有一个 python 代码,运行 一个 MySQL 查询并发送一封带有 csv 附件的电子邮件。我需要进行以下三处更改。有人可以帮我解决这个问题吗?
- 我需要将实际位置更改为临时位置(我累了,它给了我一个错误,然后我将其更改为实际位置)
- 我的结果 csv 文件中没有 header。如何在结果 csv 上添加 header?
- 它在每个原始文件之间放置了一个空原始文件,我该如何删除它。
代码 -
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='')
添加 header 行
attach_file.writerow(["date", "address", "col3"])
attach_file.writerows(databases)
我有一个 python 代码,运行 一个 MySQL 查询并发送一封带有 csv 附件的电子邮件。我需要进行以下三处更改。有人可以帮我解决这个问题吗?
- 我需要将实际位置更改为临时位置(我累了,它给了我一个错误,然后我将其更改为实际位置)
- 我的结果 csv 文件中没有 header。如何在结果 csv 上添加 header?
- 它在每个原始文件之间放置了一个空原始文件,我该如何删除它。
代码 -
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='')
添加 header 行
attach_file.writerow(["date", "address", "col3"])
attach_file.writerows(databases)