我正在试图搜索一个数据库的明日日期,然后进行电子邮件功能。你知道吗
def send_email():
currentdate = time.strftime("%d/%m/%Y")
nextday = datetime.date.today() + datetime.timedelta(days=1)
tomorrow = str(nextday.strftime("%d %m %Y"))
with sqlite3.connect("school.db") as db:
cursor = db.cursor()
cursor.execute("SELECT DateIn FROM MusicLoan WHERE DateIn = ?",(tomorrow,))
row = cursor.fetchall()[0]
if str(row) == str(tomorrow):
cursor.execute("SELECT StudentID FROM MusicLoan WHERE DateIn = ?", (currentdate))
ID = cursor.fetcone()[0]
cursor.execute("SELECT email FROM Student WHERE StudentID = ?",(ID))
email = cursor.fetchone()[0]
fromaddr = email
toaddr = "danielarif@blueyonder.co.uk"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Music Reminder"
body = "A reminder that your music is due in tomorrow"
msg.attach(MIMEText(body, 'plain'))
try:
server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.set_debuglevel(1)
server.starttls()
server.ehlo()
server.login("danielarif123@gmail.com", "DanR0bJ0nes3")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
print("Email Sent Successfully")
send_email()
except smtplib.SMTPException:
print ("Error: unable to send email")
send_email()
我的问题是它到达行=游标.fetchall()[0],然后停止。 我该怎么解决这个问题
你知道吗游标.执行(“从MusicLoan中选择DateIn,其中DateIn=?”(明天)
并使用一种方法游标.fetchone()
有关更多示例,请参阅https://docs.python.org/2/library/sqlite3.html
它不会“停止”,它会到达下一行的if条件,因为这永远不可能是真的,所以它会一直到最后。你知道吗
fetchall()
将为您提供一个元组列表,即匹配的所有行的列表,其中每行是所有列的元组。因此,您的[0]
索引实际上为您提供了一个元组,其中包含一个元素,即数据列。但是str(row)
将类似于('2015-04-29',)
,它不等于'2015-04-29'
。你知道吗您需要对来自
fetchall()
的结果进行迭代,并检查每一行。你知道吗然而,这仍然不能解决您的问题,因为您有一个更深层次的逻辑错误。选择DateIn等于明天的行。但是你要检查DateIn是否等于今天。再说一次,这不可能是真的。你知道吗
相关问题 更多 >
编程相关推荐