@pypyshka

Как обойти ошибку при поиске в базе данных SQLite?

Добрый день.
Изучаю Python 3.5.1 и SQLite 3. В базе данных есть таблица test с записью:
id | data
1 | 123

Я пытаюсь сделать поиск по этой базе:
text = ['123, '456']
sql = """SELECT * FROM test WHERE data LIKE (?)"""
try:
    for i in text:
                cur.execute(sql, [(i),])
                result = cur.fetchone()[1]
                if i == result:
                    print("Найдено.")
                else:
                    print("Не найдено.")
except TypeError as err:
    print("Ошибка: ", err)
else:
    print("Готово.")

При поиске значения "123" выводится "Найдено.", а вот когда дело доходит до значения "456" возникает ошибка 'NoneType' object is not subscriptable, так как его нет в базе. Подскажите, пожалуйста, можно ли значение, которого нет в базе пропустить и завершить цикл, То есть, например:
Проверяем: "123"
Выводим: "Найдено."
Проверяем: "456"
Выводим: "Не найдено."
Ищем дальше значения, если их нет, то выводим "Готово."
  • Вопрос задан
  • 416 просмотров
Решения вопроса 1
DDDsa
@DDDsa
Можете, например, сначала проверять количество возвращенных записей
if cur.rowcount > 0:
    result = cur.fetchone()[1]
    print('Найдено')
else:
    print('Не найдено')


Кстати, ваш LIKE будет выводить только точные совпадения. Если вы хотите ввести "12" и найти строчку "123", то ничего не найдется, нужно использовать LIKE %[search_string]%. Только в этом случае придется распрощаться с удобной подстановкой через (?)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы