Tablestore için Python SDK, geniş tablo ve zaman serisi modeli işlemlerini destekler.
Başlangıç
Ortamınızı hazırlayın, SDK'yı yükleyin ve bir istemci başlatarak kullanmaya başlayın.
Ön Koşullar
Python çalışma zamanı ortamını indirin ve yükleyin. Python sürümünüzü kontrol etmek için python3 --version komutunu çalıştırın.
Python SDK'nın 6.0.0 ve sonraki sürümleri yalnızca Python 3'ü destekler; Python 2 artık desteklenmemektedir. Python 2 kullanmanız gerekiyorsa 5,4,4 veya önceki bir sürüm kullanın.
SDK'yı Yükleme
Bir yükleme yöntemi seçin. Kod örneklerinin doğru çalışmasını sağlamak için en son SDK sürümünü kullanın.
pip kullanarak yükleme (önerilen)
SDK'yı yüklemek için aşağıdaki komutu çalıştırın.
pip3 install tablestore
GitHub'dan yükleme
git kullanarak SDK'yı GitHub'dan klonlayın ve yükleyin.
-
Depoyu klonlayın.
git clone https://github.com/aliyun/aliyun-tablestore-python-sdk.git -
SDK dizinine gidin.
cd aliyun-tablestore-python-sdk -
SDK'yı yükleyin.
python3 setup.py install
Kaynak koddan yükleme
SDK'yı kaynak kodundan indirin ve yükleyin.
Python SDK dosyasını indirin ve sıkıştırılmış arşivi açın.
Arşivi açtığınız SDK dizinine gidin.
-
SDK'yı yükleyin.
python3 setup.py install
Erişim Kimlik Bilgilerini Yapılandırma
Alibaba Cloud hesabınız veya RAM kullanıcınız için bir AccessKey oluşturun ve kimlik bilgilerini doğrudan koda sabit kodlamamak amacıyla bu bilgileri ortam değişkeni olarak yapılandırın.
Güncellenmiş ortam değişkenlerinin yüklenmesi için yapılandırmadan sonra IDE'nizi, terminalinizi, diğer masaüstü uygulamalarınızı ve arka plan hizmetlerini yeniden başlatın. Diğer erişim kimlik bilgisi türleri hakkında daha fazla bilgi için bkz. Erişim kimlik bilgilerini yapılandırma .
Linux
-
Ortam değişkenlerini
~/.bashrcdosyasına ekleyin:echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc -
Değişiklikleri uygulayın:
source ~/.bashrc -
Ortam değişkenlerini doğrulayın:
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
macOS
-
Varsayılan kabuğunuzu kontrol edin:
echo $SHELL -
Kabuk türünüze göre yapılandırma yapın:
Zsh
-
Ortam değişkenlerini
~/.zshrcdosyasına ekleyin:echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Değişiklikleri uygulayın:
source ~/.zshrc -
Ortam değişkenlerini doğrulayın:
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
Bash
-
Ortam değişkenlerini
~/.bash_profiledosyasına ekleyin:echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile -
Değişiklikleri uygulayın:
source ~/.bash_profile -
Ortam değişkenlerini doğrulayın:
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
-
Windows
CMD
-
CMD'de ortam değişkenlerini ayarlayın:
setx TABLESTORE_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET" -
CMD'yi yeniden başlatın ve doğrulayın:
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET%
PowerShell
-
PowerShell'de aşağıdaki komutları çalıştırın:
[Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User) -
Ortam değişkenlerini doğrulayın:
[Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
İstemciyi Başlatma
Aşağıdaki kod, bir örnekteki tüm veri tablolarını ve zaman serisi tablolarını listeleyerek bağlantıyı doğrulamak üzere bir istemci başlatır.
Yeni örneklerde genel ağ erişimi varsayılan olarak devre dışıdır. Etkinleştirmek için örneğin Network Management bölümüne gidin.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import sys
from tablestore import OTSClient
def main():
try:
# Get access credentials from environment variables. Ensure TABLESTORE_ACCESS_KEY_ID and TABLESTORE_ACCESS_KEY_SECRET are set.
access_key_id = os.getenv("TABLESTORE_ACCESS_KEY_ID")
access_key_secret = os.getenv("TABLESTORE_ACCESS_KEY_SECRET")
# TODO: Replace the following values with your instance details.
instance_name = "n01k********" # Instance name
endpoint = "https://n01k********.cn-hangzhou.ots.aliyuncs.com" # Instance endpoint
# Create a client instance.
client = OTSClient(endpoint, access_key_id, access_key_secret, instance_name)
# List the data tables.
resp = client.list_table()
print(f"Found {len(resp)} data tables in instance '{instance_name}':")
for table_name in resp:
print(f"{table_name}")
# List the time series tables.
resp = client.list_timeseries_table()
print(f"\nFound {len(resp)} time series tables in instance '{instance_name}':")
for tableMeta in resp:
print(f"{tableMeta.timeseries_table_name}")
except Exception as e:
print(f"Operation failed: {str(e)}")
sys.exit(1)
if __name__ == "__main__":
main()
Sürüm Uyumluluğu
Geçerli sürüm 6.x.x'tir. Önceki sürümlerle uyumluluk durumu şu şekildedir:
-
5.x.x ile uyumludur.
5,4.x, 5,3.x ve 5,2.x uyumludur. Ancak 5.2.1 ve 5.1.0 aşağıdaki durumlarda uyumsuzluk gösterir:
-
Searchyönteminin dönüş türü.5.1.0 ve önceki sürümlerde bu yöntem varsayılan olarak bir
Tupledöndürür. 5.2.0 ve sonraki sürümlerden itibaren ise birSearchResponsenesnesi döndürür.SearchResponsesınıfı__iter__yöntemini uygular ve yinelemeyi destekler. BirTuplealmak içinSearchResponse.v1_response()yöntemini kullanın. -
Yeni
ParallelScanyöntemi.Bu yöntem varsayılan olarak bir
ParallelScanResponsenesnesi döndürür. BirTuplealmak içinParallelScanResponse.v1_response()yöntemini kullanın.
-
4.x.x ile uyumludur.
-
2.x.x ile uyumlu değildir. 2.x.x serisi sırasız birincil anahtarları desteklerken 4.0.0 ve sonraki sürümler desteklemez. Aradaki temel değişiklikler şunlardır:
Paket adı
ots2yerinetablestoreolarak değiştirildi.Client.create_tableyöntemineTableOptionsparametresi eklendi.put_row,get_rowveupdate_rowişlemlerinde birincil anahtar sırasının korunması amacıylaprimary_keytürüdictyerinelistolarak değiştirildi.put_rowveupdate_rowişlemlerindeattribute_columnstürüdictyerinelistolarak değiştirildi.put_rowveupdate_rowişlemleri içinattribute_columnsalanınatimestampeklendi.get_rowveget_rangeişlemleri artık en az birimax_version and time_rangeparametresini gerektirir.put_row,update_rowvedelete_rowişlemleri artıkreturn_typeparametresini destekler. Desteklenen tek değer, satırın birincil anahtarını (PK) döndürenRT_PKdeğeridir.put_row,update_rowvedelete_rowyanıtları artıkreturn_rowalanını içerir.return_typedeğeriRT_PKolarak ayarlandığındareturn_rowalanıPKdeğerini içerir.
SSS
"Signature mismatch" hatası alırsam ne yapmalıyım?
Aşağıdaki özel durum oluşur:
Error Code: OTSAuthFailed, Message: Signature mismatch., RequestId: 0005f55a-xxxx-xxxx-xxxx-xxxxxxxxxxxx, TraceId: 10b0f0e0-xxxx-xxxx-xxxx-xxxxxxxxxxxx, HttpStatus: 403
Neden: AccessKey ID veya AccessKey secret yanlış.
Çözüm: Doğru AccessKey ID ve AccessKey secret değerlerini girin.
"Request denied by instance ACL policies" hatası alırsam ne yapmalıyım?
SDK, bir Request denied by instance ACL policies hatası döndürebilir:
[ErrorCode]:OTSAuthFailed, [Message]:Request denied by instance ACL policies., [RequestId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [TraceId]:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, [HttpStatus:]403
Neden: İstemcinin ağ türü, örneğin erişim ilkesiyle eşleşmiyor. Örneğin, örnek internet üzerinden erişime izin vermeyebilir.
-
Çözüm: Genel ağ erişimi varsayılan olarak devre dışıdır. Etkinleştirmek için:
Tablestore konsolunda hedef örneği tıklayın.
Network Management öğesini tıklayın. Allowed Network Type altında Internet seçeneğini belirleyin ve ardından Settings düğmesini tıklayın.
"Request denied because this instance can only be accessed from the binded VPC" hatası alırsam ne yapmalıyım?
SDK, bir Request denied because this instance can only be accessed from the bound VPC hatası döndürebilir:
[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
Neden: Örnek erişim türü Bound VPCs Only veya Tablestore Console or Bound VPCs olarak ayarlanmış ancak istemci bağlı bir VPC içinde değil veya Tablestore'a bir VPC uç noktası üzerinden erişmiyor.
-
Çözüm: İnternet erişimine izin verin veya bir VPC bağlayıp istemciyi bu VPC içinden bağlayın:
Tablestore konsolunda hedef örneği tıklayın.
yolunu izleyin. Bir VPC ID ve bir VSwitch seçin, bir VPC Name girin ve ardından OK düğmesini tıklayın.
Tablestore kaynaklarına HTTPS üzerinden nasıl erişirim?
Python SDK'nın en son sürümünü kullanın. OpenSSL sürümünüzün 0.9.8j veya üzeri olduğundan emin olun. OpenSSL 1.0.2d önerilir.
Protobuf sürümleri uyumsuzsa ne yapmalıyım?
Bazı protobuf sürümleri, kurulum paketindeki *pb2.py dosyalarıyla uyumsuz olabilir. Bu sorunu çözmek için *pb2.py dosyalarını yeniden oluşturun:
-
Mevcut protoc sürümünüzü kullanarak proto dosyaları için kod üretin.
protoc --python_out=. tablestore/protobuf/search.proto protoc --python_out=. tablestore/protobuf/table_store.proto protoc --python_out=. tablestore/protobuf/table_store_filter.proto Oluşturulan dosyaların adını
pb2.pyuzantısıyla değiştirin ve bunları kurulum dizinindekitablestore/protobuf/klasörüne kopyalayarak orijinal*pb2.pydosyalarının üzerine yazın.
Credentials aracını kullanarak erişim kimlik bilgilerini okuma
-
alibabacloud_credentials paketini yüklemek için aşağıdaki komutu çalıştırın.
pip3 install alibabacloud_credentials -
Ortam değişkenlerini yapılandırın.
ALIBABA_CLOUD_ACCESS_KEY_IDveALIBABA_CLOUD_ACCESS_KEY_SECRETdeğişkenlerini Alibaba Cloud hesabınızın AccessKey ID ve AccessKey secret değerlerine ayarlayın. -
Erişim kimlik bilgilerini okuyun.
Aşağıdaki kod, Credentials aracını kullanarak erişim kimlik bilgilerini ortam değişkenlerinden okur.
# -*- coding: utf-8 -*- from alibabacloud_credentials.client import Client as CredClient # Use CredClient to get the AccessKey ID and AccessKey secret from the environment variables. cred = CredClient() access_key_id = cred.get_credential().access_key_id access_key_secret = cred.get_credential().access_key_secret