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
DeclarativeBasees el padre compartido.- Las anotaciones
Mappeddeclaran los tipos de columna. create_allemite el DDL de cada clase mapeada.
Palabras clave y builtins usados aquí
classdeffloatforidintpassprintreturnselfsortedstr
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.
Paso 2 de 5 en SQLAlchemy; paso 14 de 19 en Servicios web y acceso a datos.