typestar

Modelos declarativos en Python

Una clase mapeada por tabla, con columnas tipadas.

from sqlalchemy import String, create_engine
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column


class Base(DeclarativeBase):
    pass


class Intento(Base):
    __tablename__ = "intentos"

    id: Mapped[int] = mapped_column(primary_key=True)
    lang: Mapped[str] = mapped_column(String(32), index=True)
    tpm: Mapped[float]
    stars: Mapped[int] = mapped_column(default=1)

    def __repr__(self):
        return f"Intento({self.lang!r}, {self.tpm})"


motor = create_engine("sqlite+pysqlite:///:memory:")
Base.metadata.create_all(motor)
print(sorted(Base.metadata.tables))
print([c.name for c in Intento.__table__.columns])

Cómo funciona

  1. DeclarativeBase es el padre compartido.
  2. Las anotaciones Mapped declaran los tipos de columna.
  3. create_all emite el DDL de cada clase mapeada.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
24
Caracteres a escribir
610
Tokens
150
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 82 segundos.

Escribe este fragmento

Paso 2 de 5 en SQLAlchemy; paso 14 de 19 en Servicios web y acceso a datos.

← Anterior Siguiente →