0
from typing import Optional

from sqlmodel import Field, Session, SQLModel, create_engine, select

class HeroTeamView(SQLModel):
    name: str
    secret_name: str
    age: Optional[int] = None

sqlite_file_name = "my.db"
db_url = f"mysql+mysqldb://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}"
engine = create_engine(db_url, echo=True)
with Session(engine) as session:
   statement = select(HeroTeamView)
   orgs = session.exec(statement)
   print(f"orgs::{orgs}")
   org_list = orgs.fetchall()

我有一个在 mysql db 中创建的视图(可以说是 HeroTeamView)。我想读这个。这个视图本质上是 Hero.Id 上加入的 Hero 和 Teams 表的左连接。

如上例所示,当我尝试选择此视图时,我收到错误 HeroTeamView is not a 'SQLModelMetaclass' object is not iterable

我不确定我是否了解如何访问视图创建的行

任何指针表示赞赏

PS:我不想直接使用 Hero 和 Team 表来编写选择查询,因为对我来说,有多个表并加入了“真实”世界的问题。使用视图为我提供了一些明显的好处,就像这里提到的

4

0 回答 0