#python #python-3.x
#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.")
Первоначальный запрос работает нормально, и он выдаст окно сообщения, если значение переменной не найдено в запросе. И если я закомментирую часть запроса в коде, то УДАЛЕНИЕ будет работать нормально. Чего я не вижу, так это того, почему операторы if и else не работают должным образом, поэтому, если значения переменной там нет … messagebox, чтобы сказать это, и если оно есть, оно удаляет строку.
Я явно что-то здесь упускаю из виду.
Ответ №1:
Мне удалось решить эту проблему после некоторого отдыха.
Проблема заключалась в сравнении:
if theResult != checkInput:
Мне нужно было изменить его на:
if theResult == None:
Эта небольшая оплошность устранена и работает так, как должна.