比较sqlite查询结果以删除发现的值

时间:2019-03-14 08:26:44

标签: python python-3.x

我正在SQLite中运行查询,以检查变量的值是否在特定列中,如果未找到,则会显示一个消息框,指出变量值不在该列中。我在代码的第二部分遇到麻烦,如果在列中找到变量值,它将删除一行。

我正在使用if和else语句,并使用比较表达式!=(不等于)和==(等于)。我确定我所忽略的东西很小,但是已经晚了,在这一点上我还是有雾。

代码:

try:
    checkInput = Recipe.get()
    c.execute('SELECT Recipe FROM Recipes WHERE Recipe = :checkInput',{"checkInput": checkInput})
    conn.commit()
    theResult = c.fetchall()
        if theResult!= checkInput:
        messagebox.showinfo("Recipes","That recipe name does not exist in the database.")
        recipe_entry.delete(0,END)
    else:
        c.execute('DELETE FROM Recipes WHERE Recipe =:checkInput',{"checkInput": checkInput})
        conn.commit()
        messagebox.showinfo("Recipes","The recipe was deleted successfully.")
        recipe_entry.delete(0,END)
except:
    messagebox.showerror("Recipes","Database Error.")

初始查询工作正常,如果在查询中找不到变量值,它将引发消息框。如果我注释掉代码的查询部分,则DELETE可以正常工作。我没有看到的是为什么if和else语句不能正常工作,所以如果变量值不存在...消息框表示,如果存在,它将删除该行。

我显然在这里忽略了一些东西。

1 个答案:

答案 0 :(得分:0)

休息后,我设法解决了这个问题。

问题是比较:

if theResult != checkInput:

我需要将其更改为:

if theResult == None:

这个小小的疏忽已经解决,并且可以正常工作。