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

Tablestore:1 行のデータを読み取る

最終更新日:Mar 31, 2026

Tablestore Python SDK を使用して、Tablestore のデータテーブルから 1 行のデータを読み取ります。

注意事項

データを読み取る際は、自動採番主キー列を含む、完全なプライマリキー値を指定する必要があります。

前提条件

Tablestore クライアントの初期化

メソッド

def get_row(self, table_name, primary_key, columns_to_get=None,
            column_filter=None, max_version=1, time_range=None,
            start_column=None, end_column=None, token=None,
            transaction_id=None):

パラメーター

パラメーター

説明

table_name(必須)

str

データテーブルの名前です。

primary_key(必須)

List[Tuple]

プライマリキーで、プライマリキー列の名前と値を含みます。

  • プライマリキー列のデータの型は、STRING、INTEGER、BINARY のいずれかです。

  • プライマリキー列の数およびデータの型は、テーブルのスキーマと一致している必要があります。

max_version(任意)

int

返されるバージョン数の最大値です。デフォルト値:1。

  • max_version または time_range のいずれかを必ず指定してください。

  • 該当するデータバージョン数がこの値を超える場合、タイムスタンプの降順で、最新の該当件数分のバージョンが返されます。

time_range(任意)

Tuple

データのバージョン範囲です。

  • max_version または time_range のいずれかを必ず指定してください。

  • Tablestore のデータテーブルでは、各属性列に複数のデータバージョンが存在する可能性があります。バージョン範囲を指定した場合、その範囲内のデータのみが返されます。

columns_to_get(任意)

List[str]

読み取るデータ列のリストです。このリストには、プライマリキー列および属性列の両方を含めることができます。

  • このパラメーターを省略した場合、行全体が返されます。

  • 対象の行に指定された列が存在しない場合、返される行オブジェクトにはプライマリキーのみが含まれ、属性列は含まれません。

column_filter(任意)

ColumnCondition

フィルター条件です。詳細については、「フィルター」をご参照ください。

  • columns_to_getcolumn_filter の両方を指定した場合、システムはまず columns_to_get で指定された列を取得し、その後その結果に対して column_filter を適用します。

transaction_id(任意)

str

ローカルトランザクションを一意に識別するローカルトランザクション ID です。詳細については、「ローカルトランザクション」をご参照ください。

サンプル

以下の例では、プライマリキー値が row1 の 1 行を読み取ります。

try:
    # プライマリキーを構築します。
    primary_key = [('id', 'row1')]

    # get_row メソッドを呼び出して、行データを読み取ります。
    consumed, return_row, next_token = client.get_row('test_table', primary_key)
    print('読み取り CU コスト: %s' % consumed.read)
    print('書き込み CU コスト: %s' % consumed.write)
    print('行データ: %s %s' % (return_row.primary_key, return_row.attribute_columns))
except Exception as e:
    print("行の読み取りに失敗しました。エラー: %s" % e)
  • 特定のバージョン範囲内のデータのみを返すには、time_range パラメーターを指定します。

    # クエリのバージョン範囲を過去 24 時間に設定します。
    time_range = (int(time.time() * 1000 - 86400 * 1000), int(time.time() * 1000))
    
    # get_row メソッドを呼び出して、行データを読み取ります。
    consumed, return_row, next_token = client.get_row('test_table', primary_key, time_range=time_range)
  • 特定の属性列のみを取得するには、columns_to_get パラメーターを指定します。

    columns_to_get = ['col2']
    
    # get_row メソッドを呼び出して、行データを読み取ります。
    consumed, return_row, next_token = client.get_row('test_table', primary_key, columns_to_get=columns_to_get)

参考文献