Le SDK Tablestore pour Python prend en charge les opérations sur le modèle de table large et le modèle de séries temporelles.
Prise en main
Préparez votre environnement, installez le SDK et initialisez un client pour commencer.
Prérequis
Téléchargez et installez l'environnement d'exécution Python. Exécutez la commande python3 --version pour vérifier votre version de Python.
À partir de la version 6.0.0, le SDK Python prend uniquement en charge Python 3 et ne prend plus en charge Python 2. Pour utiliser Python 2, vous devez utiliser la version 5.4.4 ou une version antérieure.
Installer le SDK
Sélectionnez une méthode d'installation. Utilisez la dernière version du SDK pour garantir le bon fonctionnement des exemples de code.
Installer avec pip (recommandé)
Exécutez la commande suivante pour installer le SDK.
pip3 install tablestore
Installer depuis GitHub
Clonez le SDK depuis GitHub à l'aide de git et installez-le.
-
Clonez le dépôt.
git clone https://github.com/aliyun/aliyun-tablestore-python-sdk.git -
Accédez au répertoire du SDK.
cd aliyun-tablestore-python-sdk -
Installez le SDK.
python3 setup.py install
Installer depuis le code source
Téléchargez et installez le SDK à partir du code source.
Téléchargez et décompressez le SDK Python.
Accédez au répertoire du SDK décompressé.
-
Installez le SDK.
python3 setup.py install
Configurer les identifiants d'accès
Créez un AccessKey pour votre compte Alibaba Cloud ou utilisateur RAM, puis configurez-le comme variable d'environnement afin d'éviter d'encoder les identifiants en dur.
Redémarrez votre IDE, votre terminal, vos autres applications de bureau et vos services en arrière-plan après la configuration pour charger les variables d'environnement mises à jour. Pour plus d'informations sur les autres types d'identifiants d'accès, consultez la rubrique Configurer les identifiants d'accès .
Linux
-
Ajoutez les variables d'environnement au fichier
~/.bashrc:echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc -
Appliquez les modifications :
source ~/.bashrc -
Vérifiez les variables d'environnement :
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
macOS
-
Vérifiez votre shell par défaut :
echo $SHELL -
Configurez les variables en fonction de votre type de shell :
Zsh
-
Ajoutez les variables d'environnement au fichier
~/.zshrc:echo "export TABLESTORE_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export TABLESTORE_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Appliquez les modifications :
source ~/.zshrc -
Vérifiez les variables d'environnement :
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
Bash
-
Ajoutez les variables d'environnement au fichier
~/.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 -
Appliquez les modifications :
source ~/.bash_profile -
Vérifiez les variables d'environnement :
echo $TABLESTORE_ACCESS_KEY_ID echo $TABLESTORE_ACCESS_KEY_SECRET
-
Windows
CMD
-
Définissez les variables d'environnement dans CMD :
setx TABLESTORE_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx TABLESTORE_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET" -
Redémarrez CMD et vérifiez :
echo %TABLESTORE_ACCESS_KEY_ID% echo %TABLESTORE_ACCESS_KEY_SECRET%
PowerShell
-
Exécutez la commande suivante dans 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) -
Vérifiez les variables d'environnement :
[Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("TABLESTORE_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
Initialiser le client
Le code suivant initialise un client et répertorie toutes les tables de données et les tables de séries temporelles d'une instance pour vérifier la connectivité.
L'accès via le réseau public est désactivé par défaut pour les nouvelles instances. Pour l'activer, accédez à Network Management pour l'instance.
#!/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()
Compatibilité des versions
La version actuelle est la 6.x.x. Compatibilité avec les versions antérieures :
-
Compatible avec la version 5.x.x.
Les versions 5.4.x, 5.3.x et 5,2.x sont compatibles. Les versions 5.2.1 et 5.1.0 présentent des incompatibilités dans les cas suivants :
-
Le type de retour de la méthode
Search.Dans les versions 5.1.0 et antérieures, cette méthode renvoie par défaut un
Tuple. À partir de la version 5.2.0, elle renvoie un objetSearchResponse. L'objetSearchResponseimplémente__iter__et prend en charge le parcours. Pour obtenir unTuple, utilisezSearchResponse.v1_response(). -
La nouvelle méthode
ParallelScan.Par défaut, cette méthode renvoie un objet
ParallelScanResponse. Pour obtenir unTuple, utilisezParallelScanResponse.v1_response().
-
Compatible avec la version 4.x.x.
-
Incompatible avec la version 2.x.x. La série 2.x.x prend en charge les clés primaires non ordonnées, ce qui n'est pas le cas des versions 4.0.0 et ultérieures. Modifications majeures :
Le nom du package est passé de
ots2àtablestore.Le paramètre
TableOptionsa été ajouté àClient.create_table.Pour
put_row,get_rowetupdate_row, le type deprimary_keyest passé dedictàlistafin de préserver l'ordre des clés primaires.Pour
put_rowetupdate_row, le type deattribute_columnsest passé dedictàlist.Le champ
timestampa été ajouté àattribute_columnspourput_rowetupdate_row.Les méthodes
get_rowetget_rangenécessitent désormais au moins l'un des paramètresmax_version and time_range.Les méthodes
put_row,update_rowetdelete_rowprennent désormais en chargereturn_type. La seule valeur prise en charge estRT_PK, qui renvoie la clé primaire (PK) de la ligne.Les méthodes
put_row,update_rowetdelete_rowincluent désormaisreturn_rowdans leur réponse. Lorsquereturn_typeest défini surRT_PK,return_rowcontient la valeurPK.
FAQ
Que faire en cas d'erreur « Signature mismatch » ?
L'exception suivante se produit :
Error Code: OTSAuthFailed, Message: Signature mismatch., RequestId: 0005f55a-xxxx-xxxx-xxxx-xxxxxxxxxxxx, TraceId: 10b0f0e0-xxxx-xxxx-xxxx-xxxxxxxxxxxx, HttpStatus: 403
Cause : L'AccessKey ID ou l'AccessKey secret est incorrect.
Solution : Fournissez l'AccessKey ID et l'AccessKey secret corrects.
Que faire en cas d'erreur « Request denied by instance ACL policies » ?
Le SDK peut renvoyer une erreur 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
Cause : Le type de réseau du client ne correspond pas à la politique d'accès de l'instance. Par exemple, l'instance n'autorise pas l'accès Internet.
-
Solution : L'accès via le réseau public est désactivé par défaut. Pour l'activer :
Dans la console Tablestore, cliquez sur l'instance cible.
Cliquez sur Network Management. Pour Allowed Network Type, sélectionnez Internet, puis cliquez sur Settings.
Que faire en cas d'erreur « Request denied because this instance can only be accessed from the binded VPC » ?
Le SDK peut renvoyer une erreur Request denied because this instance can only be accessed from the bound 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
Cause : Le type d'accès à l'instance est défini sur Bound VPCs Only ou Tablestore Console or Bound VPCs, mais le client ne se trouve pas dans un VPC attaché ou n'accède pas à Tablestore via un endpoint VPC.
-
Solution : Autorisez l'accès Internet ou attachez un VPC et connectez le client depuis celui-ci :
Dans la console Tablestore, cliquez sur l'instance cible.
Cliquez sur . Sélectionnez un VPC ID et un VSwitch, saisissez un VPC Name, puis cliquez sur OK.
Comment accéder aux ressources Tablestore via HTTPS ?
Utilisez la dernière version du SDK Python. Assurez-vous que votre version d'OpenSSL est la 0.9.8j ou une version ultérieure. La version 1.0.2d d'OpenSSL est recommandée.
Que faire en cas d'incompatibilité des versions de protobuf ?
Certaines versions de protobuf sont incompatibles avec les fichiers *pb2.py du package d'installation. Pour résoudre ce problème, régénérez les fichiers *pb2.py :
-
Utilisez votre version actuelle de protoc pour générer le code pour les fichiers 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 Renommez les fichiers générés avec l'extension
pb2.pyet copiez-les danstablestore/protobuf/du répertoire d'installation, en remplaçant les fichiers*pb2.pyd'origine.
Utiliser l'outil Credentials pour lire les identifiants d'accès
-
Exécutez la commande suivante pour installer le package alibabacloud_credentials.
pip3 install alibabacloud_credentials -
Configurez les variables d'environnement.
Définissez
ALIBABA_CLOUD_ACCESS_KEY_IDetALIBABA_CLOUD_ACCESS_KEY_SECRETsur l'AccessKey ID et l'AccessKey secret de votre compte Alibaba Cloud. -
Lisez les identifiants d'accès.
Le code suivant lit les identifiants d'accès à partir des variables d'environnement à l'aide de l'outil Credentials.
# -*- 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