本文將通過參數說明和範例程式碼為您介紹如何使用 Python SDK 建立資料表。在建立資料表時,您需要指定資料表的結構資訊和配置資訊。高效能型執行個體中的資料表還可以根據需要設定預留讀寫輸送量。
注意事項
建立資料表後需要幾秒鐘進行載入,在此期間對該資料表的讀寫資料操作均會失敗。請等待資料表載入完畢後再進行資料操作。
如果您有主鍵資料自增的需求,例如電商網站的商品 ID、論壇文章的 ID 等情境,可以在建立資料時配置主鍵列自增。具體操作,請參見主鍵列自增。
前提條件
已通過控制台建立執行個體。具體操作,請參見建立執行個體。
已初始化 OTSClient。具體操作,請參見初始化 OTSClient。
介面
"""
說明:根據指定表結構資訊建立資料表。
當建立一個資料表後,通常需要等待幾秒鐘時間使partition load完成,才能進行各種操作。
返回:無。
"""
def create_table(self, table_meta, table_options, reserved_throughput, secondary_indexes=[])
參數說明
參數 | 說明 |
table_meta(必選) | 資料表的結構資訊,包括如下內容:
|
table_options(必選) | 資料表的配置資訊,包括如下內容:
|
secondary_indexes(可選) | 索引列表。每個索引包含以下內容:
|
reserved_throughput(必選) | 預留讀寫輸送量,單位為 CU。預設值為 0。 重要 僅高效能型執行個體支援設定資料表的預留讀寫輸送量為非零值。 |
樣本
建立資料表
以下樣本用於建立資料表。
# 建立資料表主鍵列的schema,包括主鍵的個數、名稱和類型。
# 第一個主鍵列為整型,名稱是pk0,該列同時也是分區鍵。
# 第二個主鍵列為整型,名稱是pk1。其他可選的類型包括STRING和BINARY,此處使用INTEGER。
schema_of_primary_key = [('pk0', 'INTEGER'), ('pk1', 'INTEGER')]
# 通過資料表名稱和主鍵列的schema建立一個tableMeta。
table_meta = TableMeta('<table_name>', schema_of_primary_key)
# 建立TableOptions,資料保留時間為31536000秒,資料超過保留時間後Table Store會自動刪除超期資料,最大儲存3個版本,寫入時指定的版本值和目前時間相差不能超過86400秒(即1天)。
table_options = TableOptions(31536000, 3, 86400)
# 設定預留讀輸送量為0,預留寫輸送量為0。
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# 調用client的create_table介面,如果沒有拋出異常,則說明執行成功。
try:
ots_client.create_table(table_meta, table_options, reserved_throughput)
print("create table succeeded.")
# 如果拋出異常,則說明執行失敗,處理異常。
except Exception:
print("create table failed.")
建立資料表時配置二級索引
建立資料表時配置全域二級索引
以下樣本用於同時建立資料表和全域二級索引。
# 建立資料表主鍵列的schema,包括主鍵的個數、名稱和類型。
schema_of_primary_key = [('gid', 'INTEGER'), ('uid', 'STRING')]
# 配置資料表的預定義列。
defined_columns = [('i', 'INTEGER'), ('bool', 'BOOLEAN'), ('d', 'DOUBLE'), ('s', 'STRING'), ('b', 'BINARY')]
# 通過資料表名稱和主鍵列的schema建立一個tableMeta。
table_meta = TableMeta('<table_name>', schema_of_primary_key, defined_columns)
# 建立TableOptions,資料永不到期,只儲存1個版本資料。
table_option = TableOptions(-1, 1)
# 設定預留讀輸送量為0,預留寫輸送量為0。
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# 設定二級索引的索引名稱、主鍵列和屬性列。索引類型預設為全域二級索引。
secondary_indexes = [
SecondaryIndexMeta('index1', ['i', 's'], ['bool', 'b', 'd']),
]
# 調用client的create_table介面,如果沒有拋出異常,則說明執行成功。
ots_client.create_table(table_meta, table_option, reserved_throughput, secondary_indexes)
建立資料表時配置本地二級索引
以下樣本用於同時建立資料表和本地二級索引。
# 建立資料表主鍵列的schema,包括主鍵的個數、名稱和類型。
schema_of_primary_key = [('gid', 'INTEGER'), ('uid', 'STRING')]
# 配置資料表的預定義列。
defined_columns = [('i', 'INTEGER'), ('bool', 'BOOLEAN'), ('d', 'DOUBLE'), ('s', 'STRING'), ('b', 'BINARY')]
# 通過資料表名稱和主鍵列的schema建立一個tableMeta。
table_meta = TableMeta('<table_name>', schema_of_primary_key, defined_columns)
# 建立TableOptions,資料永不到期,只儲存1個版本資料。
table_option = TableOptions(-1, 1)
# 設定預留讀輸送量為0,預留寫輸送量為0。
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
# 設定二級索引的索引名稱、主鍵列、索引列和索引類型。其中設定索引類型為本地二級索引。
secondary_indexes = [
SecondaryIndexMeta('index1', ['gid', 's'], ['bool', 'b', 'd'],index_type= SecondaryIndexType.LOCAL_INDEX),
]
# 調用client的create_table介面,如果沒有拋出異常,則說明執行成功。
ots_client.create_table(table_meta, table_option, reserved_throughput, secondary_indexes)