J'essaie d'utiliser la fonctionnalité update_item
Pour DynamoDB dans boto3.
J'ai du mal à mettre à jour les listes d'articles. Je voudrais créer une nouvelle liste si la liste n'existe pas encore et sinon l'ajouter à la liste existante.
L'utilisation d'un UpdateExpression
de la forme SET my_list = list_append(my_list, :my_value)
renvoie une erreur "L'expression fournie fait référence à un attribut qui n'existe pas dans l'élément" si la liste n'existe pas encore.
Une idée de la façon dont je devrais modifier mon UpdateExpression
?
Merci et meilleures salutations, Fabian
Vous pouvez utiliser la construction list_append(if_not_exists())
.
UpdateExpression:
'SET my_list2 = list_append(if_not_exists(my_list2, :empty_list), :my_value)'
ExpressionAttributeValues:
{ ":my_value":[{"S":"test"}], ":empty_list":[] }
Une alternative à la solution Boris pourrait être d'utiliser set au lieu de lister le type de données et d'utiliser le mot clé ADD, il fait exactement ce que vous voulez.
Avec Ajouter, l'expression de mise à jour devient: ADD setName :s
Et les valeurs d'attribut d'expression peuvent être comme: {":s": {"SS":["First", "Second"]}}