14 puntos por xguru 2025-08-04 | 6 comentarios | Compartir por WhatsApp
  • Crate SQL puro basado en Rust con enfoque asíncrono (async), que permite validar consultas SQL en tiempo de compilación sin DSL usando macros de Rust
    • ¡No es un ORM!: ideal para proyectos que quieren usar SQL tal cual, sin ORM
  • Soporta bases de datos como PostgreSQL, MySQL, MariaDB, SQLite
    • Puedes definir DATABASE_URL en el archivo .env para hacer verificaciones fácilmente en tiempo de compilación
  • Implementación Pure Rust (el driver de MySQL/MariaDB está escrito 100% en Rust; SQLite se integra con una librería en C), diseñada de forma segura sin usar código unsafe, lo que le da alta confiabilidad
  • Compatible con los principales runtimes asíncronos de Rust como Tokio, async-std, actix, así como con varios backends TLS, y puede usarse de forma independiente de la plataforma
  • Licencia dual MIT/Apache 2.0, por lo que puede aprovecharse ampliamente en proyectos de código abierto y comerciales

Funciones principales

  • Connection pooling con sqlx::Pool
  • Streaming asíncrono de rows desde la base de datos
  • Preparación y caché automática de consultas por conexión
  • También permite ejecutar fácilmente consultas no preparadas (no Prepared), devolviendo los resultados en el mismo tipo de row
  • Soporte para conexiones cifradas con TLS en las BD compatibles (MySQL, MariaDB, PostgreSQL)
  • Soporte para notificaciones asíncronas de PostgreSQL: LISTEN y NOTIFY
  • Soporte para transacciones anidadas usando savepoints
  • Soporte para AnyPool, que permite cambiar el driver de base de datos de forma selectiva en tiempo de ejecución

6 comentarios

 
secret3056 2025-08-04

Personalmente, me gusta el enfoque de sqlc de Go.

Básicamente, consiste en escribir primero consultas nativas y luego generar el código.

 
mokaa 2025-08-04

El problema de no poder serializar campos con intercalación _bin como String lleva más de un año sin corregirse, así que resulta difícil recomendarlo para uso en producción. Incluso es una regresión, por lo que muchos usuarios y bibliotecas siguen quedándose en la versión 0.7.

 
secret3056 2025-08-04

Parece que al final sí lo arreglaron, pero les tomó casi un año.

 
unsure4000 2025-08-04

¿Podrías compartir el enlace del issue? Estuve buscando un poco, pero me costó encontrarlo.

 
xguru 2025-08-04

SQLx - Rust SQL Toolkit
Lo compartí una vez hace 5 años, pero desde entonces ha habido bastantes cambios.

Ahora ya es posible validarlo en tiempo de compilación conectándose a una DB real,
es compatible incluso con tokio/async-std/actix,
y se han reforzado funciones y pruebas útiles para uso en producción, como pool de conexiones, transacciones anidadas y AnyPool, por lo que ya puede aplicarse también a servicios de gran escala; es un proyecto recomendable para proyectos que usan SQL directamente sin ORM.

Y además, a través de sqlx han surgido proyectos como SeaORM y Welds, que implementan ORM.
También están SeaQuery, que es un query builder, y SQLPage, que es un framework de aplicaciones web.