Python数据库查询和邮件发送脚本

假设你是一位数据分析师,每天早上需要查询公司数据库中的数据,并将结果发送给多位同事。在过去,你可能需要手动执行这些任务,但现在你可以通过编写Python脚本来自动完成这些工作。

准备工作

在开始之前,确保你已经完成以下准备工作:

  1. 安装必要的Python库:确保你已经安装了pandassqlalchemysmtplib等必要的Python库。

  2. 配置数据库连接信息:将数据库连接信息(主机地址、端口、用户名、密码和数据库名称)保存在db_config字典中。

  3. 配置邮箱信息:将邮箱配置信息(SMTP服务器、SMTP端口、发件人邮箱、发件人密码以及接收人邮箱列表)保存在email_config字典中。

优化Python脚本

下面是如何优化Python脚本的步骤:

1. 导入必要的库

首先,导入脚本所需的库。

import time
import urllib
import schedule
import sqlalchemy
import pandas as pd
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import datetime

2. 配置数据库连接和邮箱信息

将数据库连接和邮箱信息保存在相应的字典中,确保密码等敏感信息已进行编码,以防止特殊字符引发的问题。

# 配置数据库连接
db_config = {
    'host': '127.0.0.1',
    'port': 3306,
    'user': 'root',
    'password': urllib.parse.quote("your_password_here"),
    'database': 'databasename'
}

# 配置邮箱信息
email_config = {
    'smtp_server': 'smtp.qq.com',
    'smtp_port': 465,
    'sender_email': 'your_sender_email@example.com',
    'sender_password': 'your_sender_password_here',
    'receiver_emails': ['recipient1@example.com', 'recipient2@example.com']
}

3. 创建数据库查询邮件发送函数

创建一个函数 query_and_send_email(),该函数负责执行数据库查询和发送邮件的操作。在函数内部,你可以执行多个数据库查询并将结果添加到邮件正文中。

def query_and_send_email():
    try:
        # 创建数据库连接
        engine = sqlalchemy.create_engine(
            f"mysql+pymysql://{db_config['user']}:{db_config['password']}@{db_config['host']}:{db_config['port']}/{db_config['database']}"
        )

        # 执行数据库查询,获取数据
        query_ak = "SELECT * FROM 表1"
        df_ak = pd.read_sql(query_ak, engine)

        query_bbc = "SELECT * FROM 表2"
        df_bbc = pd.read_sql(query_bbc, engine)

        query_bbd = "SELECT * FROM 表3"
        df_bbd = pd.read_sql(query_bbd, engine)

        # 获取当前日期
        current_date = datetime.now().strftime("%Y-%m-%d")

        # 构建邮件内容
        subject = f"数据库查询结果 - {current_date}"
        message = MIMEMultipart()
        message['Subject'] = subject
        message['From'] = email_config['sender_email']
        message['To'] = ', '.join(email_config['receiver_emails'])

        # 将数据添加到邮件正文中
        html_content = f"<h1>数据查询结果 - 统计及汇总-{current_date}</h1>" + df_ak.to_html() + "<br><br>" \
                        + f"<h1>数据查询结果 - 数据统计-{current_date}</h1>" + df_bbc.to_html()+ "<br><br>" +\
                        f"<h1>数据查询结果 - 注册统计(上月+上周+昨日+今日+7日+30日)-{current_date}</h1>" + df_bbd.to_html()
        message.attach(MIMEText(html_content, 'html'))

        # 发送邮件
        with smtplib.SMTP_SSL(email_config['smtp_server'], email_config['smtp_port']) as server:
            server.login(email_config['sender_email'], email_config['sender_password'])
            server.sendmail(email_config['sender_email'], email_config['receiver_emails'], message.as_string())
        print("邮件发送成功!")
    except Exception as e:
        print("发生错误:", e)

4. 调用函数执行任务

最后,调用 query_and_send_email() 函数执行数据库查询和邮件发送任务。如果你想要定时执行任务,可以使用 schedule 库来安排定时任务。

# 调用函数直接执行发送
query_and_send_email()

# 如果需要定时执行任务,取消下面的注释
# schedule.every().day.at("08:00").do(query_and_send_email)  # 每天早上8点发送

# 循环执行定时任务
# while True:
#     schedule.run_pending()
#     time.sleep(1)

通过以上步骤,你可以轻松优化Python脚本,实现数据库查询和邮件发送的自动化操作,从而提高工作效率。

结语

本文介绍了如何优化Python脚本,实现数据库查询和邮件发送的自动化操作。通过合理配置数据库连接信息和邮箱信息,以及编写相应的函数,你可以轻松完成这些任务。希望本文对你在日常工作中的自动化需求有所帮助。

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:Python数据库查询和邮件发送脚本

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年9月23日
下一篇 2023年9月23日

相关推荐

  • 如何使用Python批量复制文件并按照规则整理

    你是否曾经遇到过这样的情景:你有一堆文件需要整理,按照一定的规则复制到不同的文件夹中,但手动复制会耗费大量的时间和精力。或者你需要将文件按照日期、类型或其他条件进行分类整理,但不知道如何批量处理它们…

    2023年9月27日
    00
  • 如何使用Python批量下载快手视频

    在浏览社交媒体时,我们常常会看到有趣的快手视频。但是,如果你想要批量下载这些视频以便离线观看,该怎么做呢?今天,我们将教你如何使用Python来批量下载快手视频,让你可以随时随地欣赏这些精彩内容。 准备工作…

    2023年10月10日
    00
  • BiliBiliTool:你的智能任务管家,轻松实现B站生活全自动化!

    在B站的丰富世界里,有无数的精彩内容等待着你去发现和体验。然而,在繁忙的生活中,你是否常常因为忙碌而错过了重要的B站任务、福利和直播节目?别担心,现在有一个绝佳的解决方案,让你的B站生活更加畅快无忧!那…

    2023年8月27日
    00
  • 在VS Code中开始使用Python

    你好!在这篇教程中,你将学习如何在Visual Studio Code中使用Python 3创建、运行和调试一个Python“掷骰子”的应用程序,使用虚拟环境,使用包等等!通过使用Python扩展,你可以将VS Code变成一个出色的、轻量级的Py…

    2023年9月19日
    00
  • SEO分析报告:百家号PC与移动榜单的粉丝数背后的故事

    在当今数字化时代,内容创作和网络营销成为了信息传播和品牌推广的关键。百家号作为一个内容创作者平台,扮演着重要的角色。本报告将深入分析百家号PC与移动榜单的粉丝数数据,探讨排名暴涨与骤降背后的故事,以帮…

    2023年10月26日
    00
  • 自动学籍照片裁剪工具:一键裁剪满足规格的学籍照片

    学校、培训机构、教育部门等经常需要处理大量学生或员工的学籍照片。这些照片通常需要符合特定的规格,包括尺寸和头像的居中等要求。手动裁剪这些照片是一项繁琐的任务,但我们可以使用Python编写一个自动化工具来…

    2023年9月21日
    00
  • 如何转换网易云音乐缓存文件为MP3格式

    在一个雨后的傍晚,我躺在窗前听着喜欢的音乐,感叹于网络的发达,我们可以轻松地在线听到任何我们想听的音乐。但突然之间,我想起一个问题:如果某一天我去了一个没有网络的地方,我还能听到这些音乐吗?当然,购…

    2023年10月10日
    00
  • 如何运用AI技术提升远程办公效率

    远程办公,作为一种灵活自由的工作方式,正变得越来越流行。对于像我这样充满热情的自由职业者来说,远程办公为我提供了无限的灵活性,但同时也带来了一些挑战。在这篇文章中,我们将探讨如何运用AI技术来提升远程…

    2023年11月26日
    00
  • 谷歌云服务器玩转指南

    谷歌云服务器(Google Cloud Compute Engine)是一项强大的云计算服务,它为用户提供了虚拟机实例,允许您在云端运行应用程序和托管网站。这项服务不仅适用于开发人员和企业,还适用于个人用户,为他们提供了强大的…

    2023年12月17日
    00
  • 如何使用Python编写递归脚本自动生成PyInstaller的.spec文件

    在软件开发中,经常需要将Python项目打包成可执行文件,以便在没有Python环境的计算机上运行。PyInstaller是一个常用的工具,可以将Python项目打包成独立的可执行文件。但是,使用PyInstaller需要编写一个.spec文件…

    2023年10月28日
    00