Sqlalchemy 2.x не анализирует объекты ORMPython

Программы на Python
Ответить
Anonymous
 Sqlalchemy 2.x не анализирует объекты ORM

Сообщение Anonymous »

Я создаю небольшую базу данных sqlite, чтобы управлять парсингом веб-страниц. У меня есть такие запросы.
async def get_by_title(session: AsyncSession, title: str) -> Optional[Manga]:
query = select(Manga).where(Manga.title == title).limit(1)
result = await session.scalar(query)
return result

Моя проблема заключается в том, что я все время выбираю, использую ли я session.execute, session.scalar или session.scalars, все возвращают объект кортежа строки, и если я использую скаляр/один/первый и т. д., я получите только самый первый элемент объекта (то есть идентификатор). Судя по документации, это не кажется правильным. Чего мне не хватает?
from .base import Base
from datetime import datetime
from sqlalchemy import func
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.dialects.sqlite import INTEGER, TEXT, DATETIME

class Manga(Base):
__tablename__ = 'manga'
manga_id: Mapped[int] = mapped_column(INTEGER,primary_key=True,autoincrement=True)
title: Mapped[str] = mapped_column(TEXT,nullable=False)
language: Mapped[str] = mapped_column(TEXT,nullable=False)
path_key: Mapped[str] = mapped_column(TEXT,nullable=False)
created_at: Mapped[datetime] = mapped_column(DATETIME,nullable=False,default=func.now())

from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass

Примечание: если я перебираю строки, я получаю кортеж со всей соответствующей информацией
async def print_rows(session: AsyncSession, title: str):
query = select(Manga).where(Manga.title == title)
result = await session.execute(query)
for row in result:
print(row) # (manga_id,title,language,path_key,created_at) all as expected



Подробнее здесь: https://stackoverflow.com/questions/793 ... rm-objects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»