Задать вопрос
@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))

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

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

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

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

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