Table Store Python SDK 支援寬表模型和時序模型操作。
快速接入
通過以下步驟快速接入Table Store Python SDK,完成從環境準備到用戶端驗證的完整流程。
準備環境
下載並安裝Python運行環境,通過 python --version 命令查看Python版本資訊。
Python SDK 從 6.0.0 版本開始僅支援 Python 3,不再支援 Python 2。如需使用 Python 2,請選擇 5.4.4 及之前的版本。
安裝SDK
根據開發環境選擇合適的安裝方式。推薦使用最新版本的SDK,確保程式碼範例正常運行。
通過pip安裝(推薦)
執行以下命令安裝Table Store Python SDK。
pip install tablestore通過Github安裝
通過 git 命令從 GitHub 下載Table Store SDK 後進行安裝。
執行以下命令下載SDK。
git clone https://github.com/aliyun/aliyun-tablestore-python-sdk.git執行以下命令進入SDK安裝包目錄。
cd aliyun-tablestore-python-sdk執行以下命令安裝SDK。
python setup.py install
通過源碼安裝
下載SDK源碼後進行安裝。
下載Python SDK並解壓。
進入SDK包解壓目錄。
執行以下命令進行SDK安裝。
python setup.py install
配置訪問憑證
為阿里雲帳號或RAM使用者建立AccessKey,並按如下方式將AccessKey配置到環境變數中。通過環境變數配置AccessKey可避免在代碼中寫入程式碼敏感資訊,提升安全性。
配置完成後請重啟或重新整理編譯運行環境,包括IDE、命令列介面、其它傳統型應用程式及後台服務,確保最新的系統內容變數成功載入。更多訪問憑證類型,請參見配置訪問憑證。
Linux
在命令列介面執行以下命令來將環境變數設定追加到
~/.bashrc檔案中。echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc執行以下命令使變更生效。
source ~/.bashrc執行以下命令檢查環境變數是否生效。
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
macOS
在終端中執行以下命令,查看預設 Shell 類型。
echo $SHELL根據預設 Shell 類型進行操作。
Zsh
執行以下命令來將環境變數設定追加到
~/.zshrc檔案中。echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc執行以下命令使變更生效。
source ~/.zshrc執行以下命令檢查環境變數是否生效。
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
Bash
執行以下命令來將環境變數設定追加到
~/.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執行以下命令使變更生效。
source ~/.bash_profile執行以下命令檢查環境變數是否生效。
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
Windows
CMD
在CMD中運行以下命令設定環境變數。
setx TABLESTORE_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"重啟CMD後,運行以下命令,檢查環境變數是否生效。
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET%
PowerShell
在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)運行以下命令,檢查環境變數是否生效。
[Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
初始化用戶端
以下範例程式碼初始化用戶端,並通過列舉Table Store執行個體下的資料表和時序表進行串連驗證。
新建立的執行個體預設未啟用公網訪問功能。如果需要通過公網訪問執行個體中的資源,請在執行個體的網路管理中設定允許公網訪問。
#!/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版本,新版本對歷史版本的相容性如下:
對5.x.x系列的SDK相容。
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()方法實現。
對4.x.x系列的SDK相容。
對2.x.x系列的SDK不相容,原因是 2.0 系列版本中支援主鍵亂序,而 4.0.0 版本開始不允許主鍵亂序,涉及的不相容點包括:
包名稱由
ots2變更為tablestore。Client.create_table介面新增TableOptions參數。put_row、get_row、update_row等介面的primary_key參數由dict類型變更為list類型,目的是保證主鍵的順序性。put_row、update_row等介面的attribute_columns參數由dict類型變更為list類型。put_row、update_row等介面的attribute_columns參數新增timestamp。get_row、get_range等介面新增max_version、time_range參數,這兩個參數必須至少存在一個。put_row、update_row、delete_row等介面新增return_type參數,目前僅支援RT_PK,表示傳回值中包含當前行PK值。put_row、update_row、delete_row等介面傳回值中新增return_row,如果在請求中指定了return_type為RT_PK,則return_row中包含此行的PK值。
常見問題
使用SDK時出現Signature mismatch異常?
使用SDK進行功能操作時出現如下異常:
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)。
使用SDK時出現Request denied by instance ACL policies異常?
使用SDK訪問Table Store執行個體中的資源時出現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問題原因:用戶端所用的網路類型不符合執行個體的網路訪問要求。例如用戶端所用的網路類型為公網,但執行個體未設定允許通過公網進行訪問。
解決方案:新建立的執行個體預設未開啟公網訪問功能,如果要使用公網訪問執行個體中的資源,可按以下步驟開啟公網訪問。
前往Table Store控制台,單擊執行個體別名。
單擊網路管理,允許網路類型勾選公網,然後單擊設定。
使用SDK時出現Request denied because this instance can only be accessed from the binded VPC異常?
使用SDK訪問Table Store執行個體中的資源時出現Request denied because this instance can only be accessed from the binded 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問題原因:在設定Table Store執行個體的訪問類型為限定綁定VPC訪問或限定控制台或綁定VPC訪問後,需要為該執行個體綁定VPC,並且確保執行個體與用戶端位於同一VPC中,通過VPC地址訪問Table Store。
解決方案:修改執行個體的訪問類型支援公網訪問,或者將VPC綁定到Table Store執行個體並確保用戶端位於該VPC網路下。VPC綁定方式:
前往Table Store控制台,單擊執行個體別名。
單擊,選擇VPC和交換器,並填寫VPC名稱,然後單擊確定。
如何使用HTTPS協議訪問Table Store資源?
使用最新版本的Python SDK,並且確保OpenSSL版本最少為0.9.8j,推薦OpenSSL 1.0.2d。
部分protobuf版本不相容?
部分protobuf版本無法和當前安裝包中的*pb2.py檔案相容,可以通過手動產生*pb2.py檔案的方式嘗試解決。具體操作如下:
使用自己目前的版本的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將產生的3個檔案更名為
pb2.py尾碼,然後拷貝檔案到安裝目錄下的tablestore/protobuf/目錄中,替換掉原有的*pb2.py檔案。
如何使用Credentials工具讀取存取憑證?
執行以下命令安裝alibabacloud_credentials包。
pip install alibabacloud_credentials配置環境變數。
配置環境變數
ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET,分別代表阿里雲帳號的AccessKey ID和AccessKey Secret。讀取存取憑證。
以下範例程式碼使用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