Lightweight Rust clients for serverless databases over HTTP.
| Crate | Database |
|---|---|
turso-http |
Turso (libSQL) |
neon-http |
Neon Serverless Postgres |
planetscale-http |
PlanetScale MySQL over HTTP |
db-http-core |
Shared core (query builder, deserializer, error types) |
Note: The
neon-httpcrate also works with PlanetScale Postgres, which is compatible with the Neon serverless driver protocol.
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct User {
id: i64,
name: String,
}
#[tokio::main]
async fn main() -> Result<(), turso_http::Error> {
let client = turso_http::Client::new_from_env()?;
let users: Vec<User> = client
.query("SELECT id, name FROM users WHERE id = $1")
.bind(1)
.fetch_all()
.await?;
println!("{:?}", users);
Ok(())
}Environment variables: TURSO_DATABASE_URL, TURSO_AUTH_TOKEN
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct User {
id: i64,
name: String,
}
#[tokio::main]
async fn main() -> Result<(), neon_http::Error> {
let client = neon_http::Client::new_from_env()?;
let users: Vec<User> = client
.query("SELECT id, name FROM users WHERE id = $1")
.bind(1)
.fetch_all()
.await?;
println!("{:?}", users);
Ok(())
}Environment variable: NEON_CONNECTION_STRING
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct User {
id: i64,
name: String,
}
#[tokio::main]
async fn main() -> Result<(), planetscale_http::Error> {
let client = planetscale_http::Client::new_from_env()?;
let users: Vec<User> = client
.query("SELECT id, name FROM users WHERE id = $1")
.bind(1)
.fetch_all()
.await?;
println!("{:?}", users);
Ok(())
}Environment variables: PLANETSCALE_HOST, PLANETSCALE_USERNAME, PLANETSCALE_PASSWORD