在Python中,可以使用pandas
库来执行SQL查询并将结果保存为Excel文件。然后,使用smtplib
库来发送电子邮件。
首先,确保已安装pandas
和openpyxl
库,执行以下命令进行安装:
pip install pandas openpyxl
然后,使用以下代码示例来安排每天运行的SQL查询并将结果以Excel文件的形式通过电子邮件发送:
import pandas as pd
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
# 执行SQL查询并将结果保存为Excel文件
def run_sql_query_and_save_to_excel():
# 运行SQL查询,获取结果数据
query_result = pd.read_sql_query("SELECT * FROM your_table", your_database_connection)
# 将结果保存为Excel文件
query_result.to_excel('query_result.xlsx', index=False)
# 发送电子邮件
def send_email():
# 设置发件人和收件人
from_email = "your_email@example.com"
to_email = "recipient@example.com"
# 创建MIMEMultipart对象,并设置邮件头部信息
msg = MIMEMultipart()
msg['From'] = from_email
msg['To'] = to_email
msg['Subject'] = "SQL查询结果"
# 添加邮件正文
body = "附件中是每天运行的SQL查询结果,请查收。"
msg.attach(MIMEText(body, 'plain'))
# 添加附件
filename = 'query_result.xlsx'
attachment = open(filename, 'rb')
# 创建MIMEBase对象,并设置附件数据
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) # 更换为你的邮箱的SMTP服务器地址和端口号
server.starttls()
server.login(from_email, "your_password") # 更换为你的邮箱和密码
text = msg.as_string()
server.sendmail(from_email, to_email, text)
server.quit()
# 主函数
def main():
run_sql_query_and_save_to_excel()
send_email()
if __name__ == "__main__":
main()
在上述代码中,你需要做以下更改:
"SELECT * FROM your_table"
更改为你的SQL查询语句。your_database_connection
更改为你的数据库连接对象。from_email
更改为发件人的电子邮件地址。to_email
更改为收件人的电子邮件地址。smtp.gmail.com
更改为你的邮箱的SMTP服务器地址,并更改端口号。from_email
和 "your_password"
更改为你的邮箱地址和密码。请确保你的邮箱允许使用SMTP服务,并且在代码中使用的邮箱地址和密码是正确的。
上一篇:安排一个Laravel命令的调度
下一篇:安排一个每天运行两次的任务。