Repolode
transact-rs

transact-rs/sqlx

Kit de herramientas SQL asíncrono y escrito en Rust puro, con consultas SQL normales verificadas en tiempo de compilación y soporte para PostgreSQL, MySQL/MariaDB y SQLite.

Estrellas
17,587
Forks
1,750
Issues abiertos
785
Último commit
hace 3 horas

¿Qué es?

SQLx es un crate de Rust para conectarse de forma asíncrona a bases de datos SQL. En lugar de usar un constructor de consultas o un DSL, se escriben cadenas SQL normales y las macros de consulta piden a la base de datos de desarrollo que las valide en tiempo de compilación, de modo que los errores de sintaxis y de tipos se detectan antes de ejecutar el programa. No es un ORM; el mapeo de filas a structs se hace con macros derive o con `query_as`.

El crate incluye un pool de conexiones, lectura de filas en streaming, caché de sentencias preparadas, transacciones con puntos de guardado y compatibilidad con LISTEN/NOTIFY en PostgreSQL. Los drivers de Postgres y MySQL/MariaDB están implementados en Rust puro, sin código unsafe, mientras que el driver de SQLite envuelve la biblioteca C de SQLite. Funciona con los runtimes tokio y async-std, y con native-tls o rustls para TLS.

Un driver `Any` permite que una aplicación elija el backend de base de datos en tiempo de ejecución a partir del esquema de la URL de conexión.

Funciones clave

  • 01Consultas SQL verificadas en tiempo de compilación mediante macros de consulta, sin un DSL de constructor de consultas.
  • 02API asíncrona con pool de conexiones integrado y lectura de filas en streaming.
  • 03Compatible con PostgreSQL, MySQL/MariaDB y SQLite.
  • 04Caché automática de sentencias preparadas por conexión.
  • 05Transacciones anidadas con puntos de guardado.
  • 06Compatibilidad con LISTEN/NOTIFY en PostgreSQL.
  • 07Funciona con tokio o async-std, y con native-tls o rustls.

Casos de uso

  • Crear servicios web asíncronos en Rust respaldados por PostgreSQL o MySQL.
  • Escribir SQL optimizado manualmente y detectar incompatibilidades con el esquema durante la compilación.
  • Integrar SQLite en una aplicación Rust con acceso asíncrono.
  • Crear herramientas independientes de la base de datos que elijan el driver en tiempo de ejecución a partir de una URL.

Inicio rápido

  1. 1

    Añade sqlx a Cargo.toml con una característica de runtime (runtime-tokio o runtime-async-std) y, opcionalmente, una característica de TLS

  2. 2

    Activa el controlador de base de datos que necesites (postgres, mysql o sqlite) en la lista de features de sqlx

  3. 3

    Crea un pool de conexiones con PgPoolOptions (o el tipo de pool correspondiente) y ejecuta una consulta como se muestra en Quickstart

Antes de usarlo

  • El controlador de SQLite depende de la biblioteca C libsqlite3 y usa código unsafe, por lo que no es Rust puro.
  • Las macros de consulta verificadas en tiempo de compilación requieren que haya una base de datos de desarrollo disponible durante la compilación, salvo que se use el modo sin conexión.
  • El controlador de MSSQL se eliminó después de la versión 0.7 y actualmente no es compatible.

Temas

Preguntas frecuentes

¿Qué es sqlx?
Kit de herramientas SQL asíncrono y escrito en Rust puro, con consultas SQL normales verificadas en tiempo de compilación y soporte para PostgreSQL, MySQL/MariaDB y SQLite. SQLx es un crate de Rust para conectarse de forma asíncrona a bases de datos SQL. En lugar de usar un constructor de consultas o un DSL, se escriben cadenas SQL normales y las macros de consulta piden a la base de datos de desarrollo que las valide en tiempo de compilación, de modo que los errores de sintaxis y de tipos se detectan antes de ejecutar el programa. No es un ORM; el mapeo de filas a structs se hace con macros derive o con `query_as`.
¿sqlx es gratuito? ¿Qué licencia tiene?
sqlx es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿sqlx sigue mantenido?
Mantenimiento activo. El último commit de sqlx fue el 21 oct 2026.
¿Para qué puedo usar sqlx?
Crear servicios web asíncronos en Rust respaldados por PostgreSQL o MySQL. Escribir SQL optimizado manualmente y detectar incompatibilidades con el esquema durante la compilación. Integrar SQLite en una aplicación Rust con acceso asíncrono. Crear herramientas independientes de la base de datos que elijan el driver en tiempo de ejecución a partir de una URL.
¿Cómo se instala sqlx?
Añade sqlx a Cargo.toml con una característica de runtime (runtime-tokio o runtime-async-std) y, opcionalmente, una característica de TLS Activa el controlador de base de datos que necesites (postgres, mysql o sqlite) en la lista de features de sqlx Crea un pool de conexiones con PgPoolOptions (o el tipo de pool correspondiente) y ejecuta una consulta como se muestra en Quickstart
¿Dónde consigo sqlx?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/transact-rs/sqlx

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados