Skip to content

Instantly share code, notes, and snippets.

@kuc-arc-f
Created September 22, 2025 08:48
Show Gist options
  • Select an option

  • Save kuc-arc-f/36f1b6e83103d6806816740d812bda93 to your computer and use it in GitHub Desktop.

Select an option

Save kuc-arc-f/36f1b6e83103d6806816740d812bda93 to your computer and use it in GitHub Desktop.
Rust, Turso SDK example
TURSO_DATABASE_URL=""
TURSO_AUTH_TOKEN=
[package]
name = "turso_cli_1"
version = "0.1.0"
edition = "2024"
[dependencies]
anyhow = "1.0.100"
dotenvy = "0.15"
libsql = "0.9.23"
tokio = { version = "1.0", features = ["full"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
//use env_logger;
use anyhow::{ensure, Context, Result};
use std::env;
use libsql::Builder;
use libsql::Connection;
use libsql::params;
use dotenvy::dotenv;
// #[tokio::main]
#[tokio::main(flavor = "current_thread")]
async fn main() -> anyhow::Result<()>{
dotenv().ok();
// 環境変数から URL, Token を取得
let url = env::var("TURSO_DATABASE_URL")
.expect("TURSO_DATABASE_URL must be set");
println!("TURSO_DATABASE_URL={}", url);
let token = env::var("TURSO_AUTH_TOKEN")
.expect("TURSO_AUTH_TOKEN must be set");
//println!("token={}", token);
// DB 接続作成(リモート、もしくはエンベデッドレプリカ)
let db = Builder::new_remote(url, token)
.build()
.await?;
let conn = db.connect()?;
// テーブルがなければ作る
conn.execute(
"CREATE TABLE IF NOT EXISTS test (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)",
(),
).await?;
// データ登録(INSERT)
conn.execute(
"INSERT INTO test (name, age) VALUES (?1, ?2)",
params!["john-5", 22],
).await?;
//UPDATE
conn.execute(
"UPDATE test set name= ?1 WHERE ID = ?2",
params!["john-up-22", 6],
).await?;
//DELETE
conn.execute(
"DELETE FROM test WHERE id = ?1",
params![4],
).await?;
// 一覧取得(SELECT)
let mut rows = conn.query(
"SELECT id, name, age FROM test",
(), // 引数なし
).await?;
println!("Users:");
while let Some(row) = rows.next().await? {
let id: i64 = row.get(0)?;
let name: String = row.get(1)?;
let age: i64 = row.get(2)?;
println!("{}: {} <{}>", id, name, age);
}
Ok(())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment