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

标签 python mysql python-3.x email pymysql

我有一个 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()

示例结果图像 -

enter image description here

非常感谢

最佳答案

要避免空行,请尝试此操作


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/

相关文章:

python - 当尝试打破 Python 3 中的 "receive"循环时,服务器套接字应用程序变成无限循环

python - 有没有办法从脚本访问 PythonAnywhere CPU Allowance?

python - 将 OrderedDict 转换为 python 中的集合

python - 没有 'class object' 的 getattr()

php - 如何在 Laravel 中将数据和文件、图像插入数据库和文件夹

python - 我如何从python中的函数参数获取和存储mysql中的值

python - Pandas DataFrame 的重音字符在 Excel 中出现乱码

python - 安装软件包后 Conda 冲突未解决

python-3.x - 如何修复 pydicom 的 dcmread() 序言错误?

默认循环计数器的 Pythonic 方式