SQLX - toolkit SQL open source baseado em Rust
(github.com/launchbadge)- 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_URLno arquivo.env
- É possível fazer checagem em tempo de compilação de forma simples definindo
- 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:
LISTENeNOTIFY - 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
Pessoalmente, gosto da abordagem do
sqlcdo Go.Basicamente, é uma forma de primeiro escrever queries nativas e depois gerar o código.
Há mais de um ano que o problema de não conseguir serializar campos com collation
_bincomoStringnã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.Parece que finalmente consertaram, mas levou quase um ano.
Você poderia compartilhar o link da issue? Dei uma procurada, mas foi difícil encontrar.
https://github.com/launchbadge/sqlx/issues/3387
Acho que é isso
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.