wranglerを使って、Cloudflare D1(SQLite DB)にアクセスする

Cloudflare入門中です。 SQLiteのマネージドDBサービス「Cloudflare D1(Alpha版)」のセットアップやwranglerでのアクセスに挑戦しました。 Cloudflareダッシュボードから、D […]

広告ここから
広告ここまで

目次

    Cloudflare入門中です。

    SQLiteのマネージドDBサービス「Cloudflare D1(Alpha版)」のセットアップやwranglerでのアクセスに挑戦しました。

    Cloudflareダッシュボードから、D1のデータベースを作成する

    セットアップは、ダッシュボードからも行えます。(wranglerからもできるそうなので、そちらはまた次回試します。)

    [Workers]タブ内にありますので、一旦Workersページに移動する必要があるかもしれません。

    [データベースを作成]を選ぶと、そのままGUIで進めるか、Wranglerを使うかを選べます。

    データベース名を設定して、作成しましょう。

    これで完成です。

    データベース名とデータベースIDをコピーしておきましょう。

    作成したデータベースにwranglerでアクセスする

    Remixなどのアプリから、D1にアクセスする設定を行います。

    wrangler.tomlにデータベース情報を追加しましょう。

    compatibility_date = "2022-04-05"
    compatibility_flags = ["streams_enable_constructors"]
    
    [[ d1_databases ]]
    binding = "DB"
    database_name = "first-remix"
    database_id = "1234-xxxx-xxxx-xxxx-5678"

    ドキュメントにあるサンプルのSQLファイル(schema.sql)を配置します。

    DROP TABLE IF EXISTS Customers;
    CREATE TABLE Customers (CustomerID INT, CompanyName TEXT, ContactName TEXT, PRIMARY KEY (`CustomerID`));
    INSERT INTO Customers (CustomerID, CompanyName, ContactName) VALUES (1, 'Alfreds Futterkiste', 'Maria Anders'), (4, 'Around the Horn', 'Thomas Hardy'), (11, 'Bs Beverages', 'Victoria Ashworth'), (13, 'Bs Beverages', 'Random Name');
    

    wranglerでSQLを実行しましょう。

    % npx wrangler d1 execute first-remix --local --file=./schema.sql
    
    ▲ [WARNING] Processing wrangler.toml configuration:
    
        - D1 Bindings are currently in alpha to allow the API to evolve before general availability.
          Please report any issues to https://github.com/cloudflare/workers-sdk/issues/new/choose
          Note: Run this command with the environment variable NO_D1_WARNING=true to hide this message
      
          For example: `export NO_D1_WARNING=true && wrangler <YOUR COMMAND HERE>`
    
    
    --------------------
    🚧 D1 is currently in open alpha and is not recommended for production data and traffic
    🚧 Please report any bugs to https://github.com/cloudflare/workers-sdk/issues/new/choose
    🚧 To request features, visit https://community.cloudflare.com/c/developers/d1
    🚧 To give feedback, visit https://discord.gg/cloudflaredev

    初回の場合、データベースファイルを作成するか聞かれます。

    ? About to create .wrangler/state/d1/DB.sqlite3, ok? › (Y/n)

    yを選ぶと、.wrangler/state/d1ディレクトリにSQLiteのファイルが生成されます。

    --localフラグをつけているので、ローカルに配置された。と一旦解釈しています。

    SELECTクエリも、--localをつけないと「そんなテーブルは存在しない」となります。

    % npx wrangler d1 execute first-remix --command="SELECT * FROM Customers"
    
    ✘ [ERROR] A request to the Cloudflare API (/accounts/xxxx/query) failed.
    
      ERROR 9009: SQL prepare error: no such table: Customers [code: 7500]
      
      If you think this is a bug, please open an issue at:
      https://github.com/cloudflare/workers-sdk/issues/new/choose
    

    --localをつけると、schema.sqlで登録したデータが取得できます。

    % npx wrangler d1 execute first-remix --command="SELECT * FROM Customers" --local
    ┌────────────┬─────────────────────┬───────────────────┐
    │ CustomerID │ CompanyName         │ ContactName       │
    ├────────────┼─────────────────────┼───────────────────┤
    │ 1          │ Alfreds Futterkiste │ Maria Anders      │
    ├────────────┼─────────────────────┼───────────────────┤
    │ 4          │ Around the Horn     │ Thomas Hardy      │
    ├────────────┼─────────────────────┼───────────────────┤
    │ 11         │ Bs Beverages        │ Victoria Ashworth │
    ├────────────┼─────────────────────┼───────────────────┤
    │ 13         │ Bs Beverages        │ Random Name       │
    └────────────┴─────────────────────┴───────────────────┘

    終わりに

    これまでKey-Value型のDBばかり触っていましたので、SQLiteが手軽に扱えるのは、なかなかアツいなと思います。

    Workersからしか利用できないのかや、WorkersなどからD1にSQLを実行する方法などは追って紹介します。

    参考資料

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark