Tablestore SDK for Python を使用して、プライマリキーで行を読み取り、必要に応じて属性列、データバージョン、またはフィルターを指定できます。
前提条件
Tablestore SDK for Python をインストールし、クライアントを初期化します。
機能の説明
get_row を呼び出して行を読み取ります。
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,
)
次の例では、example_table からプライマリキーが [("partition", "device"), ("id", 1)] の行を読み取ります。各属性列の最新バージョンのみが返されます。
primary_key = [("partition", "device"), ("id", 1)]
consumed, return_row, next_token = client.get_row(
"example_table",
primary_key,
)
if return_row is not None:
print(return_row.primary_key)
print(return_row.attribute_columns)
パラメーター
get_row メソッドには、次のパラメーターが含まれます。
|
名前 |
型 |
説明 |
|
table_name (必須) |
|
テーブルの名前。 |
|
primary_key (必須) |
|
プライマリキー。すべてのプライマリキー列を指定します。名前、順序、数、型は、テーブルのプライマリキーのスキーマと一致している必要があります。 |
|
columns_to_get (任意) |
|
返すプライマリキーまたは属性列。省略した場合、行全体が返されます。行に指定した属性列が含まれていない場合、 |
|
column_filter (任意) |
|
フィルター。詳細については、「フィルターの使用」をご参照ください。 |
|
max_version (任意) |
|
各属性列で返すバージョンの最大数です。デフォルト値は |
|
time_range (任意) |
|
ミリ秒単位のデータバージョンの時間範囲。開始は含み、終了は含みません。この範囲内のデータバージョンのみが返されます。このパラメーターと |
|
start_column (任意) |
|
ワイド行を読み取る際の開始属性列。 |
|
end_column (任意) |
|
ワイド行を読み取る際の終了属性列。 |
|
token (任意) |
|
ワイド行の次ページの開始位置。前回のリクエストで返された |
|
transaction_id (任意) |
|
ローカルトランザクションID。ローカルトランザクション内で読み取る場合にのみ、このパラメーターを指定します。詳細については、「ローカルトランザクションの使用」をご参照ください。 |
応答
get_row は次の値を返します。
|
フィールド |
型 |
説明 |
|
consumed |
|
この操作で消費された読み取りおよび書き込み CU。 |
|
return_row |
|
返された行。行が存在しない、フィルターを通過しない、または指定した属性列が 1 つも含まれていない場合、この値は |
|
next_token |
|
ワイド行の次ページの開始位置。 |
例
属性列の指定
次の例では、status と temperature の属性列のみを返します。
primary_key = [("partition", "device"), ("id", 1)]
columns_to_get = ["status", "temperature"]
consumed, return_row, next_token = client.get_row(
"example_table",
primary_key,
columns_to_get=columns_to_get,
)
データバージョンの時間範囲の指定
次の例では、直近 1 日に書き込まれたすべてのデータバージョンを返します。
end_time = int(time.time() * 1000)
start_time = end_time - 86400 * 1000
primary_key = [("partition", "device"), ("id", 1)]
consumed, return_row, next_token = client.get_row(
"example_table",
primary_key,
max_version=None,
time_range=(start_time, end_time),
)
行のフィルタリング
次の例では、status 属性列の最新値が online の場合にのみ行を返します。
primary_key = [("partition", "device"), ("id", 1)]
column_filter = SingleColumnCondition(
"status",
"online",
ComparatorType.EQUAL,
pass_if_missing=False,
)
consumed, return_row, next_token = client.get_row(
"example_table",
primary_key,
column_filter=column_filter,
)