# 设置liunx系统运行python代码的解释器
#!/usr/bin/python3
# python声明文件的编码格式为UTF-8
# python2默认以ASCII编码来读取文件,如果不声明编码格式,它可能会无法正确地解析非ASCII字符(比如中文字符)。
# python3开始默认支持中文了,就可以省去这行注释。
# -*- coding: utf-8 -*-
# 导入Python的SMTP库,用于发送邮件
import smtplib
# 从email库中导入MIMEMultipart类,用于创建多部分MIME邮件
from email.mime.multipart import MIMEMultipart
# 从email库中导入MIMEText类,用于创建文本部分的MIME邮件
from email.mime.text import MIMEText
# 从email库中导入MIMEApplication类,用于创建二进制文件作为邮件附件的MIME邮件
from email.mime.application import MIMEApplication
# 导入pandas库,这是一个用于数据分析和处理的强大库
import pandas as pd
# 导入pymysql库,这是一个用于连接和操作MySQL数据库的Python库
import pymysql
# 没用到
# import openpyxl
# 定义数据库连接配置,包括主机地址、用户名、密码、数据库名称
db_config = {
'host': '192.168.75.148', # 数据库主机地址
'user': 'seluser', # 数据库用户名
'password': 'zzz-123-ZZZ', # 数据库密码
'database': 'db1', # 数据库名称
}
# 定义SMTP服务器和端口,用于发送邮件
smtp_server = 'smtp.qq.com' # SMTP服务器地址
port = 587 # SMTP服务器端口
# smtp_server_secure = False 表示不使用安全连接(如TLS)
smtp_server_secure = False
# 定义发件人和收件人邮箱地址
sender = '*********@qq.com' # 发件人邮箱地址
receiver = '*********@qq.com, *********@qq.com' # 收件人邮箱地址
# 定义用于SMTP服务器登录的密码
password = '*****************' # SMTP服务器的登录密码
# 定义SQL查询语句,用于从数据库中查询数据
sql = "SELECT id 编号, rid 房间号, name 名字, love 爱好, addr 地址 FROM table1" # 查询语句,从名为"table1"的表中查询出id、rid、name、love、addr字段的数据
# 使用pymysql库连接MySQL数据库,**db_config用于传递数据库连接参数
connection = pymysql.connect(**db_config)
try:
with connection.cursor() as cursor: # 使用上下文管理器来管理数据库连接,确保连接的正确关闭
cursor.execute(sql) # 执行SQL查询语句
result = cursor.fetchall() # 获取查询结果
finally:
connection.close() # 在finally块中关闭数据库连接,确保无论是否有异常发生,都会关闭数据库连接
# 定义一个空列表,用于存储查询结果的列表形式
data = []
for row in result: # 遍历查询结果的每一行数据
data.append(list(row)) # 将每一行数据转化为列表形式,并添加到data列表中
# 使用pandas库将查询结果转化为DataFrame对象,方便后续的数据处理和分析
df = pd.DataFrame(data)
# 使用列表推导式获取所有列名,并将它们存储在field_names变量中
field_names = [description[0] for description in cursor.description]
# 为DataFrame对象设置列名,这里使用前面获取的field_names
df.columns = field_names
# 将DataFrame对象转换为HTML格式的表格,并设置样式参数
# index=False表示不显示索引列,border=0表示不显示边框,header=True表示显示表头
# 转换结果存储在html_content变量中
html_content = df.to_html(index=False, border=0, header=True)
# 定义HTML页面的头部样式,包括背景颜色、字体大小、内边距等
html_head = '''
Table
''' # 定义HTML页面的尾部样式,即结束标记,包括和
html_tail = '''