本文介紹如何通過 Python SDK 批量讀取Table Store中的資料,支援查詢多個表的資料。
注意事項
單次批量讀取操作最多支援讀取 100 行資料。
前提條件
方法說明
def batch_get_row(self, request)範例程式碼
以下範例程式碼用於讀取 test_table 表中主索引值為 row1 和 row2 的兩行資料。
try:
primary_keys = []
# 添加第 1 行主鍵資訊
primary_keys.append([('id', 'row1')])
# 添加第 2 行主鍵資訊
primary_keys.append([('id', 'row2')])
# 構造查詢條件
batchGetRowItem = TableInBatchGetRowItem('test_table', primary_keys=primary_keys, max_version=1)
# 調用 batch_get_row 方法進行批量資料查詢
request = BatchGetRowRequest()
request.add(batchGetRowItem)
response = client.batch_get_row(request)
# 返回結果處理
print('* Is all succeeded: %s' % response.is_all_succeed())
print('* Succeeded Rows: ')
for succeed in response.get_succeed_rows():
if succeed.row is not None:
print('table_name: %s. primary_key: %s, attribute_columns: %s.' % (succeed.table_name, succeed.row.primary_key,
succeed.row.attribute_columns))
else:
print('table_name: %s. This row is not exist.' % succeed.table_name)
if not response.is_all_succeed():
print('* Failed Rows: ')
for failed in response.get_failed_rows():
print('table_name: %s. error code: %s, error message: %s.' % (failed.table_name, failed.error_code,
failed.error_message))
except Exception as e:
print("Batch get row failed with error: %s" % e)您可以在批量讀取資料時參考以下範例程式碼進行參數設定。
讀取多張表的資料。批量讀取支援一次讀取多張表的資料,您需要為每張表指定一個TableInBatchGetRowItem。
# 構造第 2 個表的查詢條件 primary_keys1 = [[('order_id', '90fb478c-1360-11f0-a34d-00163e30a2a9')]] batchGetRowItem1 = TableInBatchGetRowItem('orders_small', primary_keys=primary_keys1, max_version=1) request.add(batchGetRowItem1)設定讀取的資料版本範圍,結果只返回版本範圍內的資料。
# 設定查詢的資料版本範圍為目前時間往前一天 time_range = (int(time.time() * 1000 - 86400 * 1000), int(time.time() * 1000)) batchGetRowItem = TableInBatchGetRowItem('test_table', primary_keys=primary_keys, time_range=time_range)指定讀取的屬性列。
columns_to_get = ['col1'] batchGetRowItem = TableInBatchGetRowItem('test_table', primary_keys=primary_keys, columns_to_get=columns_to_get, max_version=1)