猿问

Sqlite3 Python 中的 DateExpiry

我试图弄清楚如何使用 SQLite3 语句编写函数,该语句负责提前通知我任何药物的有效期,假设是 30 天。我做了这样的事情,但它不能正常工作


l1top = Label(fr,text="Number of serie:")

l1top.grid(row=0,column=0,padx=20,sticky=E,pady=10)

l2top = Label(fr,text="Name of medicine:")

l2top.grid(row=1,column=0,padx=20,sticky=E,pady=10)

l3top = Label(fr,text="Dose")

l3top.grid(row=3,column=0,padx=20,sticky=E,pady=10)

l4top = Label(fr,text="Type of medicine")

l4top.grid(row=4,column=0,padx=20,sticky=E,pady=10)

l5top = Label(fr,text="Packages:")

l5top.grid(row=5,column=0,padx=20,sticky=E,pady=10)

l5top = Label(fr,text="Bottles:")

l5top.grid(row=6,column=0,padx=20,sticky=E,pady=10)

l6top = Label(fr,text="Expiry Date:")

l6top.grid(row=7,column=0,padx=20,sticky=E,pady=10)

def expiry():

    conn = sqlite3.connect("pharmacy.db")

    cur = conn.cursor()

    cur.execute('SELECT date FROM medicine WHERE date <= 30')

    matched = [rec[0] for rec in cur]

    conn.close()

    items = [row for row in tree.get_children() if tree.item(row, 'values')[6] in matched]

    tree.selection_set(items)

expiry()

上面的代码没有正确选择,因为它只根据天匹配,但它不包括小部件 DateEntry(下面)中的整个日期。如何重写 SQLite 语句,它获取整个日期并将所有产品与到期日期在 30 天后结束并用红色突出显示带有日期的最后一列 ([6])。


e6 = DateEntry(fr,width=12,bg="darkblue",fg="white",year=2020,state="readonly",date_pattern="dd/mm/yyyy",textvariable=six)

e6.grid(row=7,column=1,pady=10)


慕姐4208626
浏览 140回答 1
1回答

aluckdog

如果列的格式date是DD-MM-YYYY,首先必须将其更改为YYYY-MM-DD,因为这是 SQLite 唯一有效的格式:UPDATE medicine&nbsp;SET date = SUBSTR(date, -4) || '-' || SUBSTR(date, 4, 2) || '-' || SUBSTR(date, 1, 2);然后使用该函数DATE()获取date从现在到现在 + 30 天之间的行:SELECT date&nbsp;FROM medicine&nbsp;WHERE date BETWEEN DATE('now') AND DATE('now', '+30 day')
随时随地看视频慕课网APP

相关分类

Python
我要回答