14 pontos por xguru 2025-08-04 | 6 comentários | Compartilhar no WhatsApp
  • Crate SQL assíncrono (async) em Rust puro, que usa macros de Rust para permitir validação de queries SQL em tempo de compilação sem DSL
    • Não é um ORM!: ideal para projetos que querem usar SQL diretamente sem ORM
  • Suporte a bancos de dados como PostgreSQL, MySQL, MariaDB, SQLite
    • É possível fazer checagem em tempo de compilação de forma simples definindo DATABASE_URL no arquivo .env
  • Implementação em Rust puro (o driver de MySQL/MariaDB é escrito 100% em Rust; o SQLite integra uma biblioteca C), com projeto seguro e sem uso de código unsafe, o que aumenta a confiabilidade
  • Compatível com os principais runtimes assíncronos de Rust, como Tokio, async-std, actix, além de vários backends TLS, podendo ser usado de forma independente de plataforma
  • Licença dupla MIT/Apache 2.0, permitindo amplo uso em projetos open source e comerciais

Principais recursos

  • Pooling de conexões com sqlx::Pool
  • Streaming assíncrono de rows a partir do banco de dados
  • Preparação automática e cache de queries por conexão
  • Execução simples também de queries não preparadas (não Prepared), com retorno no mesmo tipo de Row
  • Suporte a conexão criptografada com TLS nos DBs compatíveis (MySQL, MariaDB, PostgreSQL)
  • Suporte a notificações assíncronas do PostgreSQL: LISTEN e NOTIFY
  • Suporte a transações aninhadas com uso de savepoints
  • Suporte a AnyPool, que permite trocar seletivamente o driver de banco em tempo de execução

6 comentários

 
secret3056 2025-08-04

Pessoalmente, gosto da abordagem do sqlc do Go.

Basicamente, é uma forma de primeiro escrever queries nativas e depois gerar o código.

 
mokaa 2025-08-04

Há mais de um ano que o problema de não conseguir serializar campos com collation _bin como String não é corrigido, então é difícil considerá-lo adequado para uso em produção. Além disso, como é uma regressão, muitos usuários e bibliotecas continuam na versão 0.7.

 
secret3056 2025-08-04

Parece que finalmente consertaram, mas levou quase um ano.

 
unsure4000 2025-08-04

Você poderia compartilhar o link da issue? Dei uma procurada, mas foi difícil encontrar.

 
xguru 2025-08-04

SQLx - Rust SQL Toolkit
Compartilhei isso uma vez há 5 anos, mas nesse meio-tempo houve bastante mudança.

Agora já é possível fazer validação em tempo de compilação conectando ao banco de dados real,
e há compatibilidade até com tokio/async-std/actix,
além de recursos úteis para uso em produção, como pool de conexões, transações aninhadas, AnyPool, e testes mais robustos, o que permite aplicá-lo também em serviços de grande porte;
acabou se tornando um projeto recomendável para projetos que usam SQL diretamente sem ORM.

E também surgiram projetos como SeaORM e Welds, que implementam ORM por meio do sqlx.
Além disso, também existem coisas como o query builder SeaQuery e o framework de aplicações web SQLPage.