Connessione a MySQL e MariaDB in Rust con sqlx
sqlx è una libreria per Rust che ci consente di connetterci a svariati database.
Non è un ORM, ma un wrapper per diversi db, il che è comodo quando dobbiamo passare da un db ad un altro.
In questo articolo vediamo come usarlo per connetterci a MySQL o MariaDB.
Queste le dipendenze da mettere nel cargo.toml:
[dependencies]
sqlx = { version = "0.8", features = ["runtime-async-std", "mysql"] }
async-std = "1.13.0"
Qui sotto un esempio di codice:
use sqlx::{Error, FromRow, MySql, MySqlPool, Pool};
use async_std::task;
#[derive(FromRow)]
struct Persona {
id: i32,
nome: String,
}
async fn connect() -> Result<Pool<MySql>, Error> {
MySqlPool::connect(
"mysql://USER:PWD@HOST:3306/DB",
)
.await
}
async fn run_query() {
let result = task::block_on(connect());
match result {
Ok(pool) => {
let query_string = "SELECT * FROM persone";
let query_result = sqlx::query_as::<_, Persona>(query_string)
.fetch_all(&pool)
.await
.unwrap();
println!("Numero di records: {}", query_result.len());
for (idx, p) in query_result.iter().enumerate() {
println!("No. Riga {}. ID: {}, Nome: {}", idx + 1, &p.id, &p.nome);
}
}
Err(err) => {
println!("Errore: [{}]", err.to_string());
}
}
}
fn main() {
task::block_on(run_query());
}
Enjoy!
rust cargo sqlx mysql mariadb
Commentami!