@spikrad

Вывод данных из БД в Телеграмбот?

Подскажите пожалуйста, я ещё далек от создания бота, и столкнулся с проблемой. Я хочу сделать вывод столбца с данными из БД пользователю. Выводить должно расписание занятий (скрин ниже). Если я сделал какие-то ошибки, прошу сделать не большое объяснение.
60367b746f2cd990709215.png
import telebot
from telebot import types
import sqlite3 as lite

def schedule_lesson(lesson):
    with lite.connect('kmb2.db') as connection:
        cursor = connection.cursor()
        cursor.execute("SELECT * FROM Schedule ", (lesson,))
        data = cursor.fetchone()
        if data is None:
            return False
        else:
            return data

@client.message_handler(commands=['info', 'info1'])
def info(message):
    inline = types.InlineKeyboardMarkup()
    PO_11 = types.InlineKeyboardButton(text='ПО-11', callback_data='по_11')
    item_no = types.InlineKeyboardButton(text='нет', callback_data='no')

    inline.add(PO_11, item_no)
    client.send_message(message.chat.id, "Выбери группу в которой учишься", reply_markup=inline)


@client.callback_query_handler(func=lambda call: True)
def answer(call):
    if call.data == 'по_11':
        les = schedule_lesson(message.text)
        client.send_message(call, les[0])  # например первое поле из таблицы
    elif call.data == 'no':
        pass


client.polling()
  • Вопрос задан
  • 437 просмотров
Пригласить эксперта
Ответы на вопрос 1
@o5a
Форматировать вывод можно например так
data = [
[1, "10:55", "math"],
[2, "12:35", "geo"],
]

s = '\n'.join('\t'.join(map(str, row)) for row in data)
print(s)

1	10:55	math
2	12:35	geo


И использовать надо fetchall, т.к. fetchone возвращает только первую строку ответа.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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