Utilisez le SDK Tablestore pour Python pour incrémenter ou décrémenter de manière atomique les colonnes d'attributs de type entier au niveau de la ligne.
Prérequis
Installez le SDK Tablestore pour Python et initialisez un client. Les compteurs atomiques nécessitent la version 5.1.0 ou ultérieure. Nous vous recommandons d'utiliser la dernière version.
Description de la fonctionnalité
Appelez update_row et définissez l'opération sur la colonne d'attribut sur INCREMENT pour modifier de manière atomique une colonne d'attribut de type entier. Une valeur positive incrémente la colonne, tandis qu'une valeur négative la décrémente.
def update_row(
self,
table_name,
row,
condition,
return_type=None,
transaction_id=None,
)
L'exemple suivant incrémente de manière atomique la colonne d'attribut counter de 5.
primary_key = [("partition", "device"), ("id", 1)]
attribute_columns = {"INCREMENT": [("counter", 5)]}
row = Row(primary_key, attribute_columns)
condition = Condition(RowExistenceExpectation.EXPECT_EXIST)
consumed, return_row = client.update_row(
"example_table",
row,
condition,
)
print("Write CU: %s" % consumed.write)
La méthode update_row du SDK Tablestore pour Python ne renvoie pas directement la valeur après une opération de compteur atomique. Pour obtenir la nouvelle valeur, appelez get_row après la mise à jour.
Paramètres
Une opération de compteur atomique contient les paramètres clés suivants.
|
Nom |
Type |
Description |
|
table_name (obligatoire) |
|
Le nom de la table. |
|
primary_key (obligatoire) |
|
La clé primaire de la ligne cible. Spécifiez toutes les colonnes de clé primaire. Le schéma de clé primaire doit correspondre à celui de la table. |
|
column_name (obligatoire) |
|
Le nom de la colonne d'attribut sur laquelle appliquer l'opération de compteur atomique. Seules les colonnes d'attributs de type entier sont prises en charge. |
|
value (obligatoire) |
|
La quantité par laquelle modifier la valeur de la colonne d'attribut. Une valeur positive incrémente la colonne, tandis qu'une valeur négative la décrémente. |
|
condition (obligatoire) |
|
La condition de mise à jour. Pour plus d'informations, consultez Utiliser des mises à jour conditionnelles. |
|
transaction_id (facultatif) |
|
L'ID de transaction locale. Spécifiez ce paramètre uniquement pour les opérations de compteur atomique dans une transaction locale. |
Limites
Seules les colonnes d'attributs de type entier sont prises en charge. Si la colonne cible n'existe pas, sa valeur initiale est traitée comme
0. Si la colonne existe mais n'est pas de type entier, le serveur renvoieOTSParameterInvalid.La quantité de modification peut être positive ou négative, mais le résultat ne doit pas dépasser la plage d'un entier signé 64 bits. Sinon, le serveur renvoie
OTSParameterInvalid.Une opération de compteur atomique s'applique uniquement à la dernière version et ne prend pas en charge une version de données spécifique. La mise à jour écrit une nouvelle version de données.
-
Dans la même mise à jour, vous ne pouvez pas effectuer une opération de compteur atomique et une autre opération, telle qu'un écrasement ou une suppression, sur la même colonne d'attribut.
ImportantUne opération de compteur atomique peut échouer en raison d'un délai d'expiration réseau ou d'une erreur système. Une nouvelle tentative directe peut appliquer la modification plusieurs fois et produire un décompte inexact. Pour une précision stricte, lisez la valeur actuelle et utilisez une mise à jour conditionnelle pour écrire la nouvelle valeur.