DEV Community

William Rodriguez
William Rodriguez

Posted on

Basta de f-strings caóticos: SQL fluido y seguro para ClickHouse.

Basta de f-strings caóticos: SQL fluido y seguro para ClickHouse.

Día 08 de la serie técnica WClickHouse Open Source.

Construir queries analíticas dinámicas uniendo f-strings es un accidente esperando ocurrir. WClickHouse QueryBuilder te da composición SQL fluida y segura.

Los Problemas Reales

  • Cadenas SQL multilínea frágiles llenas de f-strings y errores de sintaxis
  • Riesgos de inyección SQL por concatenar parámetros dinámicos sin escapar
  • Dificultad de reutilizar código al componer dashboards dinámicos con filtros

La Implementación

from wclickhouse import QueryBuilder

qb = QueryBuilder()
query, params = (
    qb.table("orders")
    .select(["region", "count() as total_orders", "sum(amount) as revenue"])
    .where("status = :status", status="completed")
    .where("amount > :min_amount", min_amount=100)
    .group_by(["region"])
    .having("revenue > :min_rev", min_rev=10000)
    .order_by("revenue", ascending=False)
    .limit(10)
    .build()
)
Enter fullscreen mode Exit fullscreen mode

Por qué esta arquitectura gana

  • API Encadenada: Construye queries con select(), where(), group_by(), order_by().
  • Anti Inyección: Parámetros escapados y validados de forma transparente.
  • Operadores Avanzados: Soporte nativo para joins, union_all y subconsultas.

Verificación y Estado

Probado y verificado contra instancias reales de ClickHouse con más de 95% de cobertura de tests. Desarrollado para Python 3.9 a 3.14 con Apache Arrow y Pydantic v2.

ClickHouse #Python #DataEngineering #OLAP #BigData #Wisrovi

Top comments (0)