本文将介绍如何使用Python实现生日提醒功能。
一、实现思路
实现生日提醒功能,需要解决以下问题:
- 如何获取生日数据
- 如何判断今天是否有生日
- 如何发送生日祝福短信或邮件
1.获取生日数据
我们可以将生日数据保存在本地或者数据库中,可以使用CSV、JSON或者SQLite等方式。下面是使用SQLite方式的示例代码:
import sqlite3 # 连接SQLite数据库 conn = sqlite3.connect("birthdays.db") # 创建数据表 conn.execute('''CREATE TABLE IF NOT EXISTS BIRTHDAYS (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, BIRTHDAY TEXT NOT NULL);''') # 插入数据 conn.execute("INSERT INTO BIRTHDAYS (ID,NAME,BIRTHDAY) VALUES (1, '张三', '1990-01-01')") conn.execute("INSERT INTO BIRTHDAYS (ID,NAME,BIRTHDAY) VALUES (2, '李四', '1992-02-02')") conn.commit() # 关闭连接 conn.close()
2.判断今天是否有生日
判断今天是否有生日,需要使用datetime模块中的date对象,具体实现方式如下:
import datetime import sqlite3 # 连接SQLite数据库 conn = sqlite3.connect("birthdays.db") # 获取今天的日期 today = datetime.date.today() # 查询今天是否有生日 result = conn.execute("SELECT NAME FROM BIRTHDAYS WHERE strftime('%m-%d',BIRTHDAY) = ?", (today.strftime('%m-%d'),)) for row in result: name = row[0] print("今天是{}的生日".format(name)) # 关闭连接 conn.close()
3.发送生日祝福短信或邮件
发送生日祝福短信或邮件,需要使用第三方库,如twilio、yagmail等。下面是使用yagmail库发送邮件的示例代码:
import datetime import sqlite3 import yagmail # 连接SQLite数据库 conn = sqlite3.connect("birthdays.db") # 获取今天的日期 today = datetime.date.today() # 查询今天是否有生日 result = conn.execute("SELECT NAME FROM BIRTHDAYS WHERE strftime('%m-%d',BIRTHDAY) = ?", (today.strftime('%m-%d'),)) for row in result: name = row[0] print("今天是{}的生日".format(name)) # 发送邮件 yag = yagmail.SMTP(user='youremail@gmail.com', password='password', host='smtp.gmail.com') contents = ['祝{}生日快乐!'.format(name)] yag.send('friend@example.com', '今天是{}的生日'.format(name), contents) # 关闭连接 conn.close()
二、完整代码
下面是完整的生日提醒Python代码:
import datetime import sqlite3 import yagmail # 连接SQLite数据库 conn = sqlite3.connect("birthdays.db") # 创建数据表 conn.execute('''CREATE TABLE IF NOT EXISTS BIRTHDAYS (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, BIRTHDAY TEXT NOT NULL);''') # 插入数据 conn.execute("INSERT INTO BIRTHDAYS (ID,NAME,BIRTHDAY) VALUES (1, '张三', '1990-01-01')") conn.execute("INSERT INTO BIRTHDAYS (ID,NAME,BIRTHDAY) VALUES (2, '李四', '1992-02-02')") conn.commit() # 获取今天的日期 today = datetime.date.today() # 查询今天是否有生日 result = conn.execute("SELECT NAME FROM BIRTHDAYS WHERE strftime('%m-%d',BIRTHDAY) = ?", (today.strftime('%m-%d'),)) for row in result: name = row[0] print("今天是{}的生日".format(name)) # 发送邮件 yag = yagmail.SMTP(user='youremail@gmail.com', password='password', host='smtp.gmail.com') contents = ['祝{}生日快乐!'.format(name)] yag.send('friend@example.com', '今天是{}的生日'.format(name), contents) # 关闭连接 conn.close()
三、总结
本文介绍了如何使用Python实现生日提醒功能,具体实现过程包括获取生日数据、判断今天是否有生日和发送生日祝福短信或邮件三个步骤。希望本文对大家有所帮助。