Sqlalchemy 2.x analysiert keine ORM-ObjektePython

Python-Programme
Guest
 Sqlalchemy 2.x analysiert keine ORM-Objekte

Post by Guest »

Ich baue eine kleine SQLite-Datenbank auf, um einige meiner Web-Scraping-Aktivitäten zu verwalten. Ich habe solche Anfragen.

Code: Select all

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
Mein Problem besteht darin, dass ich nur auswählen kann, ob ich session.execute, session.scalar oder session.scalars verwende. Alle geben das Tupelobjekt der Zeile zurück und ob ich scalar/one/first usw. verwende Holen Sie sich nur das allererste Element des Objekts (also die ID). Dies scheint auf der Grundlage der Dokumentation nicht korrekt zu sein. Was übersehe ich?

Code: Select all

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())

Code: Select all

from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
Hinweis: Wenn ich über die Zeilen iteriere, erhalte ich ein Tupel mit allen entsprechenden Informationen

Code: Select all

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post