Сравнение результата запроса sqlite с удалением найденного значения

#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:
  

Эта небольшая оплошность устранена и работает так, как должна.