安排一个每天运行的SQL查询,并将结果以Excel文件的形式通过电子邮件发送。
创始人
2024-11-04 13:30:44
0

在Python中,可以使用pandas库来执行SQL查询并将结果保存为Excel文件。然后,使用smtplib库来发送电子邮件。

首先,确保已安装pandasopenpyxl库,执行以下命令进行安装:

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服务,并且在代码中使用的邮箱地址和密码是正确的。

相关内容

热门资讯

安装apache-beam==... 出现此错误可能是因为用户的Python版本太低,而apache-beam==2.34.0需要更高的P...
避免在粘贴双引号时向VS 20... 在粘贴双引号时向VS 2022添加反斜杠的问题通常是由于编辑器的自动转义功能引起的。为了避免这个问题...
Android Recycle... 要在Android RecyclerView中实现滑动卡片效果,可以按照以下步骤进行操作:首先,在项...
安装了Anaconda之后找不... 在安装Anaconda后,如果找不到Jupyter Notebook,可以尝试以下解决方法:检查环境...
omi系统和安卓系统哪个好,揭... OMI系统和安卓系统哪个好?这个问题就像是在问“苹果和橘子哪个更甜”,每个人都有自己的答案。今天,我...
原生ios和安卓系统,原生对比... 亲爱的读者们,你是否曾好奇过,为什么你的iPhone和安卓手机在操作体验上有着天壤之别?今天,就让我...
Android - 无法确定任... 这个错误通常发生在Android项目中,表示编译Debug版本的Java代码时出现了依赖关系问题。下...
Android - NDK 预... 在Android NDK的构建过程中,LOCAL_SRC_FILES只能包含一个项目。如果需要在ND...
Akka生成Actor问题 在Akka框架中,可以使用ActorSystem对象生成Actor。但是,当我们在Actor类中尝试...
Agora-RTC-React... 出现这个错误原因是因为在 React 组件中使用,import AgoraRTC from “ago...