Как из базы данных SQLalchemy получить данные по номеру и создать из них список (инлайн клавиатуру для aiogram)

Нужно выводить доступные курсы в виде инлайн-кнопок в боте телеграмм на aiogram. БД на SQLalchemy.

Код для добавления инлайн кнопок(не лучший вариант, но что делал до этого не помню):

from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
from utils.db_api.sqlite import Course
from keyboards.inline.callback_datas import buy_callback

inlinekey = []
a = []
for i in range(1,Course.count_course()):

    a.Course.get_name(i)
    a = [a[0], buy_callback.new(item_name=i)]
    inlinekey[0].append(a)

print(inlinekey)
choice = InlineKeyboardMarkup(row_width=2,
                              inline_keyboard=[inlinekey])

И вот код БД:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import declarative_base, sessionmaker

engine = create_engine('sqlite:///course.db')
Base = declarative_base()

class Course(Base):
    __tablename__ = 'course'

    number = Column(Integer, primary_key=True)
    name = Column(String)
    text = Column(String)
    price = Column(Integer)

    def add_course(number, name, text, price):
        Session = sessionmaker(bind=engine)
        session = Session()
        new_course = Course(number=number, name=name, text=text, price=price)
        session.add(new_course)
        session.commit()

    def get_name(self, a):
        Session = sessionmaker(bind=engine)
        session = Session()
        course = session.query(Course).all()
        count = 0
        for i in course:
            if i == a:
                self=[i.name, i.text, i.price]
                return self
            count += 1
            print(i.number, i.name, i.text, i.price)
    def count_course():
        Session = sessionmaker(bind=engine)
        session = Session()
        course = session.query(Course).all()
        count = 0
        for i in course:
            count += 1
            print(i.number, i.name, i.text, i.price)
        return count
Base.metadata.create_all(engine)

Вопрос. Как правильно вывести курсы из БД на инлайн кнопки?


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