我正在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语句不能正常工作,所以如果变量值不存在...消息框表示,如果存在,它将删除该行。
我显然在这里忽略了一些东西。
答案 0 :(得分:0)
休息后,我设法解决了这个问题。
问题是比较:
if theResult != checkInput:
我需要将其更改为:
if theResult == None:
这个小小的疏忽已经解决,并且可以正常工作。