typestar

select en Python

La API de consultas 2.0: arma un select, ejecútalo, lee escalares o filas.

from sqlalchemy import create_engine, func, select
from sqlalchemy.orm import DeclarativeBase, Mapped, Session, mapped_column


class Base(DeclarativeBase):
    pass


class Run(Base):
    __tablename__ = "runs"
    id: Mapped[int] = mapped_column(primary_key=True)
    lang: Mapped[str]
    tpm: Mapped[float]


motor = create_engine("sqlite+pysqlite:///:memory:")
Base.metadata.create_all(motor)

with Session(motor) as sesion:
    sesion.add_all([Run(lang="python", tpm=104.0),
                     Run(lang="python", tpm=91.0),
                     Run(lang="rust", tpm=98.0)])
    sesion.commit()

    rapidos = sesion.scalars(
        select(Run).where(Run.tpm > 95).order_by(Run.tpm.desc())).all()
    print([(r.lang, r.tpm) for r in rapidos])

    por_lang = sesion.execute(
        select(Run.lang, func.avg(Run.tpm)).group_by(Run.lang)).all()
    print([(lang, round(prom, 1)) for lang, prom in por_lang])

Cómo funciona

  1. select(Model) devuelve objetos completos.
  2. where, order_by y limit se encadenan encima.
  3. scalars() desenvuelve las filas de una sola columna.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
31
Caracteres a escribir
813
Tokens
244
Ritmo de tres estrellas
110 tpm

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

Escribe este fragmento

Paso 4 de 5 en SQLAlchemy; paso 16 de 19 en Servicios web y acceso a datos.

← Anterior Siguiente →

select en otros lenguajes