[Python] How to create a SQL View in SQLModel?

Discussão em 'Python' iniciado por Stack, Setembro 13, 2025.

  1. Stack

    Stack Membro Participativo

    How can I create a view in SQLModel?

    For instance, starting from this example taken from the user guide, which creates a table for Hero and a table for Team, where a Team can contain multiple Heros:

    from sqlmodel import Field, Session, SQLModel, create_engine


    class Team(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    name: str = Field(index=True)
    headquarters: str


    class Hero(SQLModel, table=True):
    id: int | None = Field(default=None, primary_key=True)
    name: str = Field(index=True)
    secret_name: str
    age: int | None = Field(default=None, index=True)

    team_id: int | None = Field(default=None, foreign_key="team.id")


    sqlite_file_name = "database.db"
    sqlite_url = f"sqlite:///{sqlite_file_name}"

    engine = create_engine(sqlite_url, echo=True)


    def create_db_and_tables():
    SQLModel.metadata.create_all(engine)


    def create_heroes():
    with Session(engine) as session:
    team_preventers = Team(name="Preventers", headquarters="Sharp Tower")
    team_z_force = Team(name="Z-Force", headquarters="Sister Margaret's Bar")
    session.add(team_preventers)
    session.add(team_z_force)
    session.commit()

    hero_deadpond = Hero(
    name="Deadpond", secret_name="Dive Wilson", team_id=team_z_force.id
    )
    hero_rusty_man = Hero(
    name="Rusty-Man",
    secret_name="Tommy Sharp",
    age=48,
    team_id=team_preventers.id,
    )
    hero_spider_boy = Hero(name="Spider-Boy", secret_name="Pedro Parqueador")
    session.add(hero_deadpond)
    session.add(hero_rusty_man)
    session.add(hero_spider_boy)
    session.commit()

    session.refresh(hero_deadpond)
    session.refresh(hero_rusty_man)
    session.refresh(hero_spider_boy)

    print("Created hero:", hero_deadpond)
    print("Created hero:", hero_rusty_man)
    print("Created hero:", hero_spider_boy)


    def main():
    create_db_and_tables()
    create_heroes()


    if __name__ == "__main__":
    main()


    I would like to create a view that shows an Hero's name with his corresponding Team's name.

    Related: How to create an SQL View with SQLAlchemy?

    Continue reading...

Compartilhe esta Página