Как сделать проверку пользовательского вводе через SQLite?

Всех приветствую! Подскажите, как сделать проверку пользовательского ввода через базу данных SQLite. Необходимо, чтобы пользователь ввел число, которое есть в базе данных в определенной строке и выполнились определенные действия. Покажу на примере кода:

def onetwofre(message):
    try:
        line_number = message.text
        check = cursor.execute('SELECT * FROM Table_table WHERE line_number=?', (line_number, )).fetchone()
        if (message.text.isdigit()) and : # Вот тут застрял, какое условие необходимо поставить?
                bot.send_message(message.chat.id, 'Именно этот номер и нужен, вы отправили число, которое есть в таблице')
        if (message.text.isdigit()) and (check is None):
                bot.send_message(message.chat.id, 'Вы отправили число, которого нет в таблице')
        else:
            bot.send_message(message.chat.id, 'Вы отправили что угодно, но не число.')
    except Exception as e:
        bot.send_message(message.chat.id, 'Ошибка')

Если пользователь вводит номер, который есть в таблице, то fetchone возвращает всю строку. Можно ли как-то сделать, чтобы возвращалось True или если возвращается какое-то значение, то выполнялось бы первое условие?

Если пользователь вводит число, которого нет в таблице, то fetchone возвращает None, что соответствует условию и цикл срабатывает.

Если пользователь вводит текст или что-то другое, срабатывает третье условие.


Ответы (1 шт):

Автор решения: Andrew

Во-первых если нужно проверить значение конкретной переменной, то не следует извлекать из БД всю строку, а лучше извлечь конкретное проверяемое значение, например вместо:

check = cursor.execute('SELECT * FROM Table_table WHERE line_number=?', (line_number, )).fetchone()

лучше выполнить:

check = cursor.execute('SELECT column_name FROM Table_table WHERE line_number=?', (line_number, )).fetchone()

Если пользовательский ввод доступен по message.text, и типы данных введенных пользователем совпадают с типом полученным из БД, то можно попробовать вот так:

if (message.text.isdigit()) and message.text == check[0]:
→ Ссылка