AIイノベーションズ ブログ

Turso DBをローカルに作成する

最終更新日:
阿部隼也
阿部 隼也
AIイノベーションズ 代表取締役社長 | x.com/ai_abe_shunya
リアルタイムアンケートツール: LiveQ

お悩み相談AIチャット: AI相談.com

ローカルで開発する

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.db

SQLite ファイルに接続

あとは作成された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: 開発体験をスムーズにするため、urlauthToken は環境変数で管理することを推奨します。

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.db

Turso Database (リモート)

すでに Turso で作成したデータベースがある場合は、SDK に url オプションを渡すことで、開発でも同じデータベースを利用できます。

Warning: Turso ホストのデータベースを使用するとプラットフォーム費用が発生し、クォータにも計上されます。ローカル開発ではコスト回避のため、SQLite や Turso CLI の利用を検討してください。

GUI から接続する

開発中は、以下のツールを使って SQLite、libSQL、または Turso のデータベースに簡単に接続できます。

ローカル環境でおすすめなのが、VSCodeの拡張機能 SQLite Viewer です。

VSCode上でSQLiteファイルを閲覧できます。普通にファイルをクリックするだけでGUIが開くので超便利です。

リアルタイムアンケートツール: LiveQ

お悩み相談AIチャット: AI相談.com