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

Tablestore:Python SDK

最終更新日:Mar 25, 2026

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

クイックスタート

環境の準備、SDK のインストール、およびクライアントの初期化を行うことで、Tablestore の Python SDK を統合します。

image

前提条件

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

バージョン 6.0.0 以降では、Python SDK は Python 3 のみをサポートし、Python 2 はサポートされません。Python 2 を使用する場合は、バージョン 5.4.4 以前を使用してください。

SDK のインストール

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

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

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

pip3 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 をインストールします。

    python3 setup.py install

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

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

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

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

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

    python3 setup.py install

アクセス認証情報の構成

AccessKey の作成を、Alibaba Cloud アカウントまたは RAM ユーザーに対して実行します。その後、以下に示すとおり、環境変数として 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.x.x シリーズのバージョンでは順序不同のプライマリキーがサポートされていますが、バージョン 4.0.0 以降ではサポートされていません。非互換性には、以下が含まれます。

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

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

    • put_rowget_rowupdate_row などのメソッドにおいて、primary_key パラメーターの型が dict から list に変更され、プライマリキーの順序が保証されるようになりました。

    • put_row および update_row などのメソッドにおいて、attribute_columns パラメーターの型が dict から list に変更されました。

    • put_row および update_row などのメソッドにおいて、timestampattribute_columns パラメーターに追加されました。

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

    • put_rowupdate_row、およびdelete_rowなどの操作は、現在return_type パラメーターをサポートしています。このパラメーターでサポートされている値はRT_PK のみであり、これは戻り値にその行のプライマリキー(PK)が含まれることを指定します。

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

よくある質問

「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(AccessKey ID および AccessKey Secret を含む)を指定してください。

「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. ネットワーク管理 をクリックします。許可されるネットワークタイプインターネット を選択し、設定項目 をクリックします。

「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 パッケージをインストールします。

    pip3 install alibabacloud_credentials
  2. 環境変数を構成します。

    ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_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

参考