Как из базы данных 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)
Вопрос. Как правильно вывести курсы из БД на инлайн кнопки?