@hobilog

Как достать и отправить все строки в Telegram-боте, включающие в себя одну из переменных в базе данных?

Мне нужно из строки к примеру: "s Miha", извлечь имя и по нему найти все строки в базе данных, где это имя есть, и соответственно отправить это все в сообщении пользователю.

Я попробовал написать такой код:

@bot.message_handler(func=lambda m: True)
def show_oper(message):
    if message.text.startswith("s"):
        mess_oper_name = message.text.split()[1]
        with sqlite3.connect('database.db') as db:
            cursor = db.cursor()
            result = cursor.execute('SELECT * FROM opers_list WHERE oper = ?', [mess_oper_name]).fetchall()
        bot.reply_to(message, '\n'.join(result))

однако вылезают ошибки в консоли и ничего не отправляется.

Есть какой-то способ по-другому это реализовать?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
@o5a
В result содержится вложенный список со всеми полями данных таблицы. Примерно так:
[(ряд1значение1, ряд1значение2, ...), (ряд2значение1, ряд2значение2, ...), ...]
Чтобы использовать join нужно сначала сформировать из всех значений ряда текст, чтобы получилось вида
[строка_ряда1, строка_ряда2, ... ]
тогда уже можно будет сделать '\n'.join()

Если все еще не понятно, вот пример из недавних ответов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы