Как отправить сообщение в Telegram-боте на aiogram 3, используя данные, извлеченные из базы данных с помощью SQLAlchemy?

Пытаюсь вытащить данные из БД с помощью sqlalchemy. Вот код:

from sqlalchemy import String, ForeignKey
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from sqlalchemy.ext.asyncio import AsyncAttrs, async_sessionmaker, create_async_engine

engine = create_async_engine(url = "sqlite+aiosqlite:///database.sqlite3")

async_session = async_sessionmaker(engine)


class Base(AsyncAttrs, DeclarativeBase):
    pass


class Week(Base):
    __tablename__ = "weeks"

    id: Mapped[int] = mapped_column(primary_key = True)
    type_week: Mapped[str] = mapped_column(String(12))


class Day(Base):
    __tablename__ = "days"

    id: Mapped[int] = mapped_column(primary_key = True)
    day_of_the_week: Mapped[str] = mapped_column(String(12))


class Lesson(Base):
    __tablename__ = "lessons"

    id: Mapped[int] = mapped_column(primary_key = True)
    week: Mapped[str] = mapped_column(ForeignKey("weeks.id"))
    day: Mapped[str] = mapped_column(ForeignKey("days.id"))
    number: Mapped[str] = mapped_column(String(12))
    time: Mapped[str] = mapped_column(String(24))
    name: Mapped[str] = mapped_column(String(255))
    classroom: Mapped[str] = mapped_column(String(12))
    teacher: Mapped[str] = mapped_column(String(24))


class СountingLesson(Base):
    __tablename__ = "countingLesson"

    id: Mapped[int] = mapped_column(primary_key = True)
    first_lesson: Mapped[str] = mapped_column(String(48))
    second_lesson: Mapped[str] = mapped_column(String(48))
    third_lesson: Mapped[str] = mapped_column(String(48))
    fourth_lesson: Mapped[str] = mapped_column(String(48))
    fifth_lesson: Mapped[str] = mapped_column(String(48))
    sixth_lesson: Mapped[str] = mapped_column(String(48))


async def async_main():
    async with engine.begin() as conn:
        await conn.run_sync(Base.metadata.create_all)

Код для вывода пользователю(запрос):

from app.database.models import async_session 
from app.database.models import Week, Day, Lesson, СountingLesson
from sqlalchemy import select, update

async def get_test():
    async with async_session() as session:
        test = select(Lesson.name)
        result = await session.execute(test)
        return result.scalar()

И само сообщение:

from aiogram import F, Router
from aiogram.types import Message, CallbackQuery
from aiogram.filters import CommandStart, Command
from aiogram.fsm.state import State, StatesGroup
from aiogram.fsm.context import FSMContext

import app.user.user_keyboards as kb
from app.database.requests import get_test

userRouter = Router()


@userRouter.message(Command("start"))
async def start(message: Message):
    test = await get_test()

    await message.answer(str(await get_test()))

При запуске бота получается вывод(В БД - 1. колонка дефис. 2. колонка дефис. 3. колонка название предмета):

-

Смотрел на ютубе, на различных сайтах, в офф доке но все ровно ничего не понял

Если знайте то скажите как тупому. Как правильно достать данные из БД и отправлять их в сообщении ботом.


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