要活成两种样子:发光和不发光,不发光的时候都是在为发光做准备

01b61591f2221f6acf6ca6f73ec1ebf1.png

这篇我们主要讲python如何连接数据库,并且发送带附件的邮件。

老规矩,文章底部可以获取源代码哦~0~

1

连接数据库

python为我们提供了操作数据库的模块,pymssql和pymysql,从模块名称就可以看出,pymssql是用于SQL Server数据库,而pymysql是用于MySQL数据库,两者用法基本一样。

此处我们以SQL Server为例。

与发送邮件类似,连接数据库也是模拟人工操作,我们需要填入“服务器名称”、“登录名”和“密码”连接到服务器后,找到需要的数据库,执行查询语句,才能得到需要的数据。

87a0936cacf48660fbf728b5df069ff5.png

connect(server, username, password, database)

server:服务器名称或IP

username:登录名

password:密码

database:数据库名称

注:连接到指定服务器的指定数据库

cursor()

注:创建游标,游标(Cursor)是查看或者处理数据的一种方法,游标可以在结果集中一次一行或多行向前/后浏览数据。

fetchall()

注:FETCH语句可以从游标中提取特定的数据,fetchall方法是提取所有的数据。

close()

注:关闭数据库连接

f22372eba8ea3fe3cf2ebbd22719598a.png

sqlserver_connect函数有两个返回值,一个是所查询的所有数据,另一个是数据的所有字段名。

2

生成xlsx文件

python处理Excel文件的模块主要有三个:xlrd,xlwt,openpyxl

我们为什么使用openpyxl模块来处理Excel,而不是另外两个呢?

因为xlwt针对的是Excel2007之前的版本(.xls),要求单个sheet不超过65535行,而openpyxl则主要针对Excel2007之后的版本(.xlsx),它支持单个sheet 100W+行。

另外,我们一般会单独建个文件夹用于存放生成的xlsx文件,为了区分同一段代码在不同时间执行生成的数据,我们会习惯于在文件名中加入代码执行的当前时间。

cell(row, col, value)

row:行(从1开始,这点与python不同)

col:列(也是从1开始,这点与python不同)

value:值

注:openpyxl模块中的一个方法,为单元格填充数据。

2e74cd482ad5702fb555e2da54937541.png

3

添加邮件附件

附件有很多类型,xlsx,jpg,pdf,mp3,mp4,但不管什么类型的附件,我们都统一使用MIMEApplication,打开文件后以“二进制”方式读取,add_header中加入附件的声明"attachment"。客户端(QQ邮箱)收到这个声明后会根据文件扩展名来确定文件类型。

8c07efc178d2ba29dcf58c56b7c54b31.png

4

实现效果

将以上三块代码拼到一起,并将参数改成你自己的,运行一下就可以发送邮件了。

cdddcdd68dc7b350945f9aaa54bcb1bc.png

我们发现附件的名称是带有20200220142702的,这个就是代码运行的时间,表示2020年2月20日14时27分02秒,这样可以完全避免文件重名。

下篇继续更新python如何发送HTML格式的邮件~

获取python代码点击了解更多~0~

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐