sqlite中的日期搜索不起作用

时间:2015-04-27 11:51:25

标签: python sql database sqlite datetime

我正在尝试搜索数据库中的明天日期,然后进入电子邮件功能。

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()

我的问题是它到达row = cursor.fetchall()[0]然后停止。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

它没有"停止",它在下一行上达到if条件,因为它永远不会成立,它会一直持续到最后。

fetchall()将为您提供一个元组列表,这是一个列表,列出了每一行都是所有列的元组的所有行。因此,您的[0]索引实际上为您提供了一个包含单个元素的元组,即数据列。但str(row)类似('2015-04-29',),不等于'2015-04-29'

您需要迭代来自fetchall()的结果,并检查每一行。

然而,由于您有更深的逻辑错误,仍然无法解决您的问题。您选择DateIn等于明天的行。但是你检查DateIn是否等于今天。再一次,这永远不会成真。

答案 1 :(得分:-1)

cursor.execute(" SELECT DateIn FROM MusicLoan WHERE DateIn =?",(明天))

并使用fetch one method cursor.fetchone()

有关更多示例,请参阅https://docs.python.org/2/library/sqlite3.html