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

Tablestore:Python SDK

最終更新日:Dec 10, 2025

Tablestore Python SDK は、ワイドテーブルモデルと時系列モデルの操作をサポートします。

クイックスタート

このセクションでは、環境の準備からクライアントの認証まで、Tablestore Python SDK を迅速に統合する方法について説明します。

事前準備

Python ランタイム環境をダウンロードしてインストールします。python --version コマンドを実行して、Python のバージョンを確認します。

バージョン 6.0.0 以降、Python SDK は Python 3 のみをサポートし、Python 2 はサポートされなくなりました。Python 2 を使用するには、バージョン 5.4.4 以前を使用する必要があります。

SDK のインストール

開発環境に基づいてインストール方法を選択します。コード例が正しく実行されるように、最新バージョンの SDK を使用してください。

pip を使用したインストール (推奨)

次のコマンドを実行して、Tablestore Python SDK をインストールします。

pip install tablestore

GitHub からのインストール

git コマンドを使用して GitHub から Tablestore SDK をダウンロードし、インストールします。

  1. 次のコマンドを実行して SDK をダウンロードします。

    git clone https://github.com/aliyun/aliyun-tablestore-python-sdk.git
  2. 次のコマンドを実行して、SDK インストールパッケージのフォルダに移動します。

    cd aliyun-tablestore-python-sdk
  3. 次のコマンドを実行して SDK をインストールします。

    python setup.py install

ソースコードからのインストール

SDK のソースコードをダウンロードしてインストールします。

  1. Python SDK をダウンロードして解凍します。

  2. SDK パッケージを解凍したフォルダに移動します。

  3. 次のコマンドを実行して SDK をインストールします。

    python setup.py install

アクセス認証情報の設定

AccessKey の作成 にて、Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey を作成します。次に、以下に示すように環境変数に AccessKey を設定します。環境変数に AccessKey を設定すると、コードに機密情報をハードコーディングすることを防ぎ、セキュリティが向上します。

設定が完了したら、開発環境を再起動またはリフレッシュする必要があります。これには、IDE、コマンドラインインターフェイス、その他のデスクトップアプリケーション、およびバックグラウンドサービスが含まれます。これにより、最新のシステム環境変数が確実に読み込まれます。その他の種類のアクセス認証情報の詳細については、「アクセス認証情報の設定」をご参照ください。

Linux

  1. 次のコマンドを実行して、環境変数の設定を ~/.bashrc ファイルに追加します。

    echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
    echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
  2. 次のコマンドを実行して変更を適用します。

    source ~/.bashrc
  3. 次のコマンドを実行して、環境変数が有効であることを確認します。

    echo $TABLESTORE_ACCESS_KEY_ID
    echo $TABLESTORE_ACCESS_KEY_SECRET

macOS

  1. ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを表示します。

    echo $SHELL
  2. デフォルトのシェルタイプに基づいて、次の操作を実行します。

    Zsh
    1. 次のコマンドを実行して、環境変数の設定を ~/.zshrc ファイルに追加します。

      echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
      echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
    2. 次のコマンドを実行して変更を適用します。

      source ~/.zshrc
    3. 次のコマンドを実行して、環境変数が有効であることを確認します。

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET
    Bash
    1. 次のコマンドを実行して、環境変数の設定を ~/.bash_profile ファイルに追加します。

      echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
      echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
    2. 次のコマンドを実行して変更を適用します。

      source ~/.bash_profile
    3. 次のコマンドを実行して、環境変数が有効であることを確認します。

      echo $TABLESTORE_ACCESS_KEY_ID
      echo $TABLESTORE_ACCESS_KEY_SECRET

Windows

CMD
  1. コマンドプロンプト (CMD) で次のコマンドを実行して、環境変数を設定します。

    setx TABLESTORE_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
    setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
  2. CMD を再起動し、次のコマンドを実行して、環境変数が有効であることを確認します。

    echo %TABLESTORE_ACCESS_KEY_ID%
    echo %TABLESTORE_ACCESS_KEY_SECRET%
PowerShell
  1. PowerShell で次のコマンドを実行します。

    [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
    [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
  2. 次のコマンドを実行して、環境変数が有効であることを確認します。

    [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
    [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

クライアントの初期化

次のサンプルコードは、クライアントを初期化し、Tablestore インスタンス内のデータテーブルと時系列テーブルをリスト表示して接続を認証します。

重要

新しいインスタンスでは、デフォルトでパブリックネットワークアクセスが無効になっています。パブリックネットワーク経由でインスタンス上のリソースにアクセスするには、インスタンスの [ネットワーク管理] 設定でパブリックネットワークアクセスを有効にできます。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import sys
from tablestore import OTSClient

def main():
    try:
        # 環境変数からアクセス認証情報を取得します。TABLESTORE_ACCESS_KEY_ID と TABLESTORE_ACCESS_KEY_SECRET を設定します。
        access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID")
        access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")

        # TODO: ご利用のインスタンスの詳細に合わせて、以下の設定を変更してください。
        instance_name = "n01k********"  # インスタンス名を入力します。
        endpoint = "https://n01k********.cn-hangzhou.ots.aliyuncs.com"  # インスタンスのエンドポイントを入力します。
        
        # クライアントインスタンスを作成します。
        client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name)

        # データテーブルをリスト表示します。
        resp = client.list_table()

        print(f"インスタンス '{instance_name}' に {len(resp)} 個のデータテーブルが見つかりました:")
        for table_name in resp:
            print(f"{table_name}")

        # 時系列テーブルをリスト表示します。
        resp = client.list_timeseries_table()

        print(f"\nインスタンス '{instance_name}' に {len(resp)} 個の時系列テーブルが見つかりました:")
        for tableMeta in resp:
            print(f"{tableMeta.timeseries_table_name}")
            
    except Exception as e:
        print(f"操作に失敗しました: {str(e)}")
        sys.exit(1)


if __name__ == "__main__":
    main()

バージョン互換性

現在のバージョンは 6.x.x です。以下に、以前のバージョンとの互換性について説明します。

  • SDK の 5.x.x シリーズと互換性があります。

    バージョン 5.4.x、5.3.x、および 5.2.x は互換性があります。ただし、バージョン 5.2.1 と 5.1.0 には次の非互換性があります。

    • Search メソッドの戻り値の型。

      バージョン 5.1.0 以前では、このメソッドはデフォルトで Tuple オブジェクトを返します。バージョン 5.2.0 以降では、このメソッドはデフォルトで SearchResponse オブジェクトを返します。SearchResponse オブジェクトは __iter__ メソッドを実装し、トラバーサルをサポートします。Tuple オブジェクトを返すには、SearchResponse.v1_response() メソッドを使用します。

    • 新しい ParallelScan メソッド。

      デフォルトでは、このメソッドは ParallelScanResponse オブジェクトを返します。Tuple オブジェクトを返すには、ParallelScanResponse.v1_response() メソッドを使用します。

  • SDK の 4.x.x シリーズと互換性があります。

  • SDK の 2.x.x シリーズとは互換性がありません。これは、2.0 シリーズのバージョンは順序不同のプライマリキーをサポートしていましたが、バージョン 4.0.0 以降はサポートしていないためです。非互換性には次のものが含まれます。

    • パッケージ名が ots2 から tablestore に変更されました。

    • TableOptions パラメーターが Client.create_table メソッドに追加されました。

    • put_rowget_rowupdate_row などのメソッドでは、プライマリキーの順序を保証するために、primary_key パラメーターの型が dict から list に変更されました。

    • put_rowupdate_row などのメソッドでは、attribute_columns パラメーターの型が dict から list に変更されました。

    • timestamp が、put_rowupdate_row などのメソッドの attribute_columns パラメーターに追加されました。

    • get_rowget_range などのメソッドに max_version, time_range パラメーターが含まれるようになりました。これら 2 つのパラメーターのうち、少なくとも 1 つを指定する必要があります。

    • put_rowupdate_rowdelete_row などの操作で return_type パラメーターがサポートされるようになりました。このパラメーターでサポートされる値は RT_PK のみで、戻り値に行のプライマリキー (PK) が含まれることを指定します。

    • put_rowupdate_rowdelete_row などの操作の戻り値に return_row フィールドが含まれるようになりました。リクエストで return_type パラメーターを RT_PK に設定した場合、return_row フィールドには行の PK 値が含まれます。

よくある質問

SDK の使用時に「Signature mismatch」エラーが発生した場合はどうすればよいですか?

次の例外が発生します。

Error Code: OTSAuthFailed, Message: Signature mismatch., RequestId: 0005f55a-xxxx-xxxx-xxxx-xxxxxxxxxxxx, TraceId: 10b0f0e0-xxxx-xxxx-xxxx-xxxxxxxxxxxx, HttpStatus: 403
  • 原因:クライアントの初期化時に指定された AccessKey ID または AccessKey Secret が正しくありません。

  • 解決策:AccessKey ID と AccessKey Secret を含む正しい AccessKey を指定してください。

SDK の使用時に「Request denied by instance ACL policies」エラーが発生した場合はどうすればよいですか?

SDK を使用して Tablestore インスタンス内のリソースにアクセスすると、次の Request denied by instance ACL policies 例外が発生します。エラー例を以下に示します。

[ErrorCode]:OTSAuthFailed, [Message]:Request denied by instance ACL policies., [RequestId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [TraceId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [HttpStatus:]403
  • 原因:クライアントが使用するネットワークタイプが、インスタンスのネットワークアクセス要件を満たしていません。たとえば、クライアントはインターネットを使用していますが、インスタンスはインターネット経由のアクセスを許可するように設定されていません。

  • 解決策:デフォルトでは、新しいインスタンスではパブリックネットワークアクセスが無効になっています。インターネット経由でインスタンス内のリソースにアクセスするには、次のようにパブリックネットワークアクセスを有効にします。

    1. Tablestore コンソールに移動し、インスタンスのエイリアスをクリックします。

    2. [ネットワーク管理] をクリックします。[許可されるネットワークタイプ][インターネット] を選択し、[設定] をクリックします。

SDK の使用時に「Request denied because this instance can only be accessed from the binded VPC」エラーが発生した場合はどうすればよいですか?

SDK を使用して Tablestore インスタンス内のリソースにアクセスすると、次の Request denied because this instance can only be accessed from the bound VPC 例外が発生します。エラー例を以下に示します。

[ErrorCode]:OTSAuthFailed, [Message]:Request denied because this instance can only be accessed from the binded VPC., [RequestId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [TraceId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [HttpStatus:]403
  • 原因:Tablestore インスタンスのアクセスタイプが [バインドされた VPC のみ] または [Tablestore コンソールまたはバインドされた VPC] に設定されている場合、インスタンスに VPC をアタッチする必要があります。また、クライアントがインスタンスと同じ VPC 内にあり、VPC エンドポイントを使用して Tablestore にアクセスしていることを確認する必要があります。

  • 解決策:インスタンスのアクセスタイプを変更してインターネットアクセスを許可するか、Tablestore インスタンスに VPC をアタッチし、クライアントがその VPC ネットワーク内にあることを確認します。VPC をアタッチするには:

    1. Tablestore コンソールに移動し、インスタンスのエイリアスをクリックします。

    2. [ネットワーク管理] > [VPC のバインド] をクリックします。[VPC ID][VSwitch] を選択し、[VPC 名] を入力してから [OK] をクリックします。

HTTPS プロトコルを使用して Tablestore リソースにアクセスするにはどうすればよいですか?

最新バージョンの Python SDK を使用してください。OpenSSL のバージョンが 0.9.8j 以降であることを確認してください。OpenSSL 1.0.2d を推奨します。

一部の protobuf バージョンに互換性がない場合はどうすればよいですか?

一部の protobuf バージョンは、現在のインストールパッケージ内の *pb2.py ファイルと互換性がありません。この問題を解決するには、次の手順に従って *pb2.py ファイルを手動で生成します。

  1. 現在のバージョンの protoc を使用して、対応する proto ファイルのコードを順番に生成します。

    protoc --python_out=. tablestore/protobuf/search.proto
    protoc --python_out=. tablestore/protobuf/table_store.proto
    protoc --python_out=. tablestore/protobuf/table_store_filter.proto
  2. 生成された 3 つのファイルの名前を pb2.py 拡張子に変更します。次に、それらのファイルをインストールディレクトリの tablestore/protobuf/ フォルダにコピーして、元の *pb2.py ファイルを置き換えます。

Credentials ツールを使用してアクセス認証情報を読み取るにはどうすればよいですか?

  1. 次のコマンドを実行して alibabacloud_credentials パッケージをインストールします。

    pip install alibabacloud_credentials
  2. 環境変数を設定します。

    ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定します。これらは、Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret を表します。

  3. アクセス認証情報を読み取ります。

    次のサンプルコードは、Credentials ツールを使用して環境変数からアクセス認証情報を読み取る方法を示しています。

    # -*- coding: utf-8 -*-
    from alibabacloud_credentials.client import Client as CredClient
    
    # CredClient を使用して、環境変数から AccessKey ID と AccessKey Secret を取得します。
    cred = CredClient()
    access_key_id = cred.get_credential().access_key_id
    access_key_secret = cred.get_credential().access_key_secret

参照