Modelos
En ese proyecto se utiliza SQLModel para la definición de modelos (tablas) y las consultas de la base de datos. Es un wrapper de SQLAlchemy, un ORM popular de python.
SQLModel combina la simplicidad de @dataclass
con el poder de
SQLAlchemy:
from datetime import datetime
from typing import Optional
from sqlmodel import SQLModel, Field, Relationship
class Wizard(SQLModel, table=True): # type: ignore # noqa
id: Optional[int] = Field(default=None, primary_key=True)
name: str
level: int = 0
created_at: datetime = Field(default_factory=datetime.now)
wizard = Wizard(name="🧙")
from datetime import datetime
from typing import Optional
from dataclasses import dataclass, field
@dataclass
class Wizard:
name: str # Fields without a default value must appear fist
id: Optional[int] = None
level: int = 0
created_at: datetime = field(default_factory=datetime.now)
wizard = Wizard(name="🧙♂️")
Importante
SQLModel fue lanzada el 24 de Agosto del 2021, y todavia no alcanza una versión estable, por lo que la API puede cambiar drasticamente y hay métodos que no tienen anotación de tipos.
En varios casos, uno puede interactuar con SQLAlchemy directamente,
como por ejemplo, en Relations
se puede usar sa_relationship_kwargs
:
class Wand(SQLModel, table=True): # type: ignore # noqa
id: Optional[int] = Field(primary_key=True, default=None)
wizard_id: int = Field(foreign_key="wizard.id", default=None)
wizard: Wizard = Relationship(sa_relationship_kwargs=dict(lazy="joined"))
wand = Wand()
wand.wizard = wizard
Última actualización:
12 de julio de 2022