Turso provides native bindings for Rust, JavaScript, Python, Go, and Java. Choose your language below.
Rust
JavaScript
Python
Go
Add the turso crate to your project:
cargo add tursocargo add tokio --features full
Then connect and query:
use turso::Builder;#[tokio::main]async fn main() -> turso::Result<()> { let db = Builder::new_local(":memory:").build().await?; let conn = db.connect()?; conn.execute( "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)", () ).await?; conn.execute( "INSERT INTO users (name, email) VALUES (?1, ?2)", ["Alice", "[email protected]"] ).await?; let mut rows = conn.query("SELECT * FROM users", ()).await?; while let Some(row) = rows.next().await? { let id = row.get_value(0)?; let name = row.get_value(1)?; let email = row.get_value(2)?; println!("User: {} - {} ({})", id.as_integer().unwrap_or(&0), name.as_text().unwrap_or(&"".to_string()), email.as_text().unwrap_or(&"".to_string()) ); } Ok(())}
Install the package:
npm install @tursodatabase/database
Then connect and query:
import { connect } from '@tursodatabase/database';// Use ':memory:' for in-memory or pass a file path for persistenceconst db = await connect(':memory:');db.exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)');const insert = db.prepare('INSERT INTO users (name, email) VALUES (?, ?)');insert.run('Alice', '[email protected]');insert.run('Bob', '[email protected]');const users = db.prepare('SELECT * FROM users').all();console.log(users);// [// { id: 1, name: 'Alice', email: '[email protected]' },// { id: 2, name: 'Bob', email: '[email protected]' }// ]
Install the package:
uv pip install pyturso
Then connect and query:
import tursoconn = turso.connect(":memory:")cur = conn.cursor()cur.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, username TEXT)")cur.execute("INSERT INTO users VALUES (1, 'alice'), (2, 'bob')")cur.execute("SELECT * FROM users ORDER BY id")rows = cur.fetchall()print(rows) # [(1, 'alice'), (2, 'bob')]conn.close()
Install the driver:
go get turso.tech/database/tursogo
Then connect and query:
package mainimport ( "database/sql" "fmt" "os" _ "turso.tech/database/tursogo")func main() { conn, err := sql.Open("turso", ":memory:") if err != nil { fmt.Printf("Error: %v\n", err) os.Exit(1) } conn.Exec("CREATE TABLE users (id INTEGER, username TEXT)") stmt, _ := conn.Prepare("INSERT INTO users (id, username) VALUES (?, ?)") defer stmt.Close() stmt.Exec(1, "alice") stmt.Exec(2, "bob") rows, _ := conn.Query("SELECT * FROM users") defer rows.Close() for rows.Next() { var id int var username string rows.Scan(&id, &username) fmt.Printf("%d, %s\n", id, username) }}