すべてのプロダクト
Search
ドキュメントセンター

Lindorm:Java 以外の Cassandra クエリ言語 (CQL) ドライバーを使用したアプリケーション開発

最終更新日:Jun 25, 2026

C++、Python、Node.js、Go のドライバーと Cassandra Query Language (CQL) を使用して LindormTable にアクセスする方法について説明します。

前提条件

  • 次の図に示すように、LindormTable の CQL エンドポイントを取得済みであること。CQL连接地址

  • 使用するプログラミング言語向けのドライバーをダウンロードしてインストール済みであること。詳細については、「Cassandra client drivers」をご参照ください。

Python CQL ドライバーを使用した LindormTable へのアクセス

  1. DataStax Python 依存パッケージをインストールします。詳細については、「Install the SDK for Python」をご参照ください。

    # 特定のバージョンをインストールします (バージョン 3.x を推奨します)。
    pip install cassandra-driver==3.19.0
    # 最新バージョンをインストールします。
    pip install cassandra-driver
  2. 次の例は、LindormTable にアクセスする方法を示しています。

    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    import logging
    import sys
    from cassandra.cluster import Cluster
    from cassandra.auth import PlainTextAuthProvider
    logging.basicConfig(stream=sys.stdout, level=logging.INFO)
    cluster = Cluster(
        # LindormTable の CQL エンドポイントを入力します。ポートを指定する必要はありません。
        contact_points=["ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com"],
        # ユーザー名とパスワードを入力します。デフォルトはどちらも root です。
        auth_provider=PlainTextAuthProvider("Username", "Password"))
    session = cluster.connect()
    # キースペースを作成します。
    session.execute(
                    "CREATE KEYSPACE IF NOT EXISTS testKeyspace WITH replication = {'class':'SimpleStrategy', 'replication_factor':2};");
    # テーブルを作成します。
    session.execute(
                    "CREATE TABLE IF NOT EXISTS testKeyspace.testTable (id int PRIMARY KEY, name text,age int,address text);");
    # データを挿入します。
    session.execute(
                    "INSERT INTO testKeyspace.testTable (id, name, age, address) VALUES ( 1, 'testname', 11, 'hangzhou');");
    # データをクエリします。
    rows = session.execute(
                    "SELECT * FROM testKeyspace.testTable ;");
    # 各行をコンソールに出力します。
    for row in rows:
        print("# row: {}".format(row))
    # セッションを終了します。
    session.shutdown()
    # クラスターをシャットダウンします。
    cluster.shutdown()

C++ CQL ドライバーを使用した LindormTable へのアクセス

  1. C++ 依存パッケージをダウンロードします。詳細については、「DataStax C++ Driver」をご参照ください。

  2. 次の例は、LindormTable にアクセスする方法を示しています。

    CassFuture* connect_future = NULL;
    CassCluster* cluster = cass_cluster_new();
    CassSession* session = cass_session_new();
    // LindormTable の CQL エンドポイントを入力します。ポートを指定する必要はありません。
    char* hosts = "ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com";
    // 接続を確立します。
    cass_cluster_set_contact_points(cluster, hosts);
    connect_future = cass_session_connect(session, cluster);
    // クエリを実行します。
    if (cass_future_error_code(connect_future) == CASS_OK) {
        CassFuture* close_future = NULL;
        const char* query = "SELECT  name FROM testKeyspace.testTable ";
        CassStatement* statement = cass_statement_new(query, 0);
        CassFuture* result_future = cass_session_execute(session, statement);
        if (cass_future_error_code(result_future) == CASS_OK) {
          // クエリ結果を取得します。
          const CassResult* result = cass_future_get_result(result_future);
          const CassRow* row = cass_result_first_row(result);
          if (row) {
            const CassValue* value = cass_row_get_column_by_name(row, "name");
            // 結果を出力します。
            const char* name;
            size_t name_length;
            cass_value_get_string(value, &name, &name_length);
            printf("name: '%.*s'\n", (int)name_length, name);
          }
          cass_result_free(result);
        } else {
          // 例外を処理します。
          const char* message;
          size_t message_length;
          cass_future_error_message(result_future, &message, &message_length);
          fprintf(stderr, "Unable to run query: '%.*s'\n", (int)message_length, message);
        }
        cass_statement_free(statement);
        cass_future_free(result_future);
        // リソースを手動で解放します。
        close_future = cass_session_close(session);
        cass_future_wait(close_future);
        cass_future_free(close_future);
      } else {
        // 例外を処理します。
        const char* message;
        size_t message_length;
        cass_future_error_message(connect_future, &message, &message_length);
        fprintf(stderr, "Unable to connect: '%.*s'\n", (int)message_length, message);
      }
      cass_future_free(connect_future);
      cass_cluster_free(cluster);
      cass_session_free(session);           

Node.js CQL ドライバーを使用した LindormTable へのアクセス

  1. Node.js 依存パッケージをインストールします。

    npm install cassandra-driver
  2. 次の例は、LindormTable にアクセスする方法を示しています。

    const cassandra = require('cassandra-driver');
    /**
    * LindormTable の CQL エンドポイントを入力します。ポートを指定する必要はありません。DC 名を datacenter1 に設定します。
    * 'Username' と 'Password' をご自身の資格情報に置き換えます。デフォルトはどちらも root です。
    */
    const client = new cassandra.Client({ contactPoints: ['ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com'], localDataCenter: 'datacenter1', credentials: { username: 'Username', password: 'Password' } });
    client.connect()
    .then(() => client.execute("CREATE KEYSPACE IF NOT EXISTS lindormtest WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '2' }"))
    .then(() => client.execute("CREATE TABLE IF NOT EXISTS lindormtest.nodejs (name text PRIMARY KEY, age int)"))
    .then(() => {
     return client.execute("INSERT INTO lindormtest.nodejs (name, age) VALUES ('lindorm', 10)");
    })
    .then(() => {
     return client.execute("SELECT name, age FROM lindormtest.nodejs WHERE name = 'lindorm' ");
    })
    .then(result => {
     const row = result.first();
     console.log('Obtained row: ', row);
     const p = row.age;
    })
    .finally(() => client.shutdown());
                

Go CQL ドライバーを使用した LindormTable へのアクセス

  1. GoCQL をインストールします。

    go get github.com/gocql/gocql
  2. 次の例は、LindormTable にアクセスする方法を示しています。

    package main
    import (
        "fmt"
        "log"
        "github.com/gocql/gocql"
    )
    func main() {
        // LindormTable の CQL エンドポイントを入力します。ポートを指定する必要はありません。
        cluster := gocql.NewCluster("ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com")
        cluster.Authenticator = gocql.PasswordAuthenticator{
            Username:"Username",
            Password: "Password",
        }
        session, _ := cluster.CreateSession()
        defer session.Close()
        // キースペースを作成します。
        if err := session.Query(`CREATE KEYSPACE ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 2}`).Exec(); err != nil {
            log.Fatal(err)
        }
        // テーブルを作成します。
        if err := session.Query(`CREATE TABLE ks.tb (cn1 text PRIMARY KEY, cn2 text, cn3 text)`).Exec(); err != nil {
            log.Fatal(err)
        }
        // 値を挿入します。
        if err := session.Query(`INSERT INTO ks.tb (cn1, cn2, cn3) VALUES (?, ?, ?)`,
            "v11", "v12", "v13").Exec(); err != nil {
            log.Fatal(err)
        }
        var column1 string
        var column2 string
        if err := session.Query(`SELECT cn1, cn2 FROM ks.tb WHERE cn1 = ?`,
            "v11").Consistency(gocql.One).Scan(&column1, &column2); err != nil {
            log.Fatal(err)
        }
        fmt.Println("ALL values:", column1, column2)
        var column3 string
        // 結果を反復処理します。
        iter := session.Query(`SELECT * FROM ks.tb WHERE cn1 = ? `, "v11").Iter()
        for iter.Scan(&column1, &column2, &column3) {
            fmt.Println("ALL value:", column1, column2, column3)
        }
        if err := iter.Close(); err != nil {
            log.Fatal(err)
        }
    }