Turso DBをローカルに作成する
ローカルで開発する
Turso を使ったローカル開発は、次のいずれかの方法で行えます。
- SQLite ローカルの SQLite データベースファイル
- Turso CLI — 管理された libSQL サーバー
- Turso Database — リモートの Turso データベース
ダンプをローカルで利用する (リモートに作ったDBをローカルに持ってくる)
本番データベースをダンプし、開発用にローカルで利用できます。
Turso CLI でダンプを作成
turso db shell your-database .dump > dump.sqlダンプから SQLite ファイル local.db を作成
cat dump.sql | sqlite3 local.dbSQLite ファイルに接続
あとは作成されたSQLiteファイルに接続するだけです。
local.db ファイルは以下のいずれの方法でも利用できます。ゼロからデータベースを作成したい場合は、新しいファイル名を使っても構いません。
ちなみに、VSCodeの拡張機能 SQLite Viewer を使うとVSCode上でSQLiteファイルを閲覧できます。普通にファイルをクリックするだけでGUIが開くので超便利です。
SQLite
ローカル開発で SQLite を使う際の注意点:
- libSQL の全機能は利用できません
- サーバーレス基盤に依存しない Turso SDK と組み合わせて動作します
SDK を使う場合、リモートの Turso データベースではなく、file: URL を渡して SQLite のデータベースファイルに接続できます。
import { createClient } from "@libsql/client";
const client = createClient({
url: "file:local.db",
});let client = libsql_client::Client::from_config(libsql_client::Config {
url: url::Url::parse("file:local.db").unwrap(),
auth_token: None,
})
.await
.unwrap();package main
import (
"database/sql"
"fmt"
"os"
_ "github.com/tursodatabase/go-libsql"
)
func main() {
dbName := "file:./local.db"
db, err := sql.Open("libsql", dbName)
if err != nil {
fmt.Fprintf(os.Stderr, "failed to open db %s", err)
os.Exit(1)
}
defer db.Close()
}import libsql_client
client = libsql_client.create_client_sync(
url="file:local.db"
)Info: 開発環境では authToken を指定する必要はありません。Info: 開発体験をスムーズにするため、urlとauthTokenは環境変数で管理することを推奨します。
Turso CLI
拡張機能のような libSQL 固有の機能を利用する場合は、Turso CLI を使用してください。
turso devこれによりローカルの libSQL サーバーが起動し、データベースが作成されます。その後、SDK の url オプションで接続できます。
import { createClient } from "@libsql/client";
const client = createClient({
url: "http://127.0.0.1:8080",
});let client = libsql_client::Client::from_config(libsql_client::Config {
url: url::Url::parse("http://127.0.0.1:8080").unwrap(),
auth_token: None,
})
.await
.unwrap();import libsql_client
client = libsql_client.create_client_sync(
url="http://127.0.0.1:8080"
)Warning: サーバーを停止すると変更は失われます。
変更を永続化したい場合や本番ダンプを使いたい場合は、SQLite ファイル名を指定して --db-file フラグを渡してください。
turso dev --db-file local.dbTurso Database (リモート)
すでに Turso で作成したデータベースがある場合は、SDK に url オプションを渡すことで、開発でも同じデータベースを利用できます。
Warning: Turso ホストのデータベースを使用するとプラットフォーム費用が発生し、クォータにも計上されます。ローカル開発ではコスト回避のため、SQLite や Turso CLI の利用を検討してください。
GUI から接続する
開発中は、以下のツールを使って SQLite、libSQL、または Turso のデータベースに簡単に接続できます。
- Beekeeper Studio — macOS、Linux、Windows
- Outerbase — ブラウザーで動作
- Outerbase Studio — ブラウザーで動作
- Dataflare — 有料(無料の機能制限版あり)、macOS、Windows、Linux
- DBeaver — macOS、Windows、Linux
ローカル環境でおすすめなのが、VSCodeの拡張機能 SQLite Viewer です。
VSCode上でSQLiteファイルを閲覧できます。普通にファイルをクリックするだけでGUIが開くので超便利です。
ブログ