Задать вопрос
@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()
  • Вопрос задан
  • 443 просмотра
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 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 возвращает только первую строку ответа.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
Wanted. Москва
До 250 000 ₽
AST Москва
До 350 000 ₽
14 янв. 2025, в 14:55
1000 руб./в час
14 янв. 2025, в 14:39
20000 руб./за проект
14 янв. 2025, в 13:32
4000 руб./за проект