Wie fügt man einen Wert zum Listenattribut in AWS DynamoDB hinzu?

9

Ich benutze DynamoDB als eine K-V db (weil es nicht viele Daten gibt, ich denke, das ist in Ordnung), und ein Teil von 'V' ist Listentyp (etwa 10 Elemente). Es gibt eine Sitzung, um einen neuen Wert anzuhängen, und ich kann keinen Weg finden, dies in 1 Anfrage zu tun. Was ich gemacht habe, ist so:

%Vor%

Ich beantrage den Server zuerst und speichere ihn, nachdem ich den Wert geändert habe. Das ist nicht atomar und sieht hässlich aus. Gibt es eine Möglichkeit, dies in einer Anfrage zu tun?

    
kxxoling 08.07.2015, 09:03
quelle

3 Antworten

25

Der folgende Code sollte mit boto3 funktionieren:

%Vor%

Die Methode get_dynamodb_resource ist hier nur:

%Vor%     
LaserJesus 28.01.2016 02:08
quelle
3

Sie können dies in einer Anfrage tun, indem Sie die API UpdateItem in verwenden Verbindung mit einem UpdateExpression . Da Sie eine Liste anhängen möchten, verwenden Sie die Aktion SET mit der Funktion list_append :

  

SET unterstützt die folgenden Funktionen:

     

...

     
  • list_append (operand, operand) - wird zu einer Liste mit einem neuen Wert ausgewertet   Element hinzugefügt. Sie können das neue Element an den Anfang oder anhängen   das Ende der Liste durch Umkehrung der Reihenfolge der Operanden.
  •   

Sie können einige Beispiele dafür auf der Ändern von Elementen und Attributen mit Aktualisierungsausdrücken sehen Dokumentation :

  
  • Im folgenden Beispiel wird der FiveStar Überprüfungsliste ein neues Element hinzugefügt.   Der Name des Ausdrucksattributs #pr ist ProductReviews ; das Attribut   Wert :r ist eine Ein-Element-Liste. Wenn die Liste zuvor zwei hatte   Elemente, [0] und [1] , dann ist das neue Element [2] .

    %Vor%
  •   
  • Im folgenden Beispiel wird der FiveStar Überprüfung ein weiteres Element hinzugefügt   Liste, aber diesmal wird das Element an den Anfang der hinzugefügt   Liste bei [0] . Alle anderen Elemente in der Liste werden um verschoben   eins.

    %Vor%
  •   

Die #pr und :r verwenden Platzhalter für die Attributnamen und -werte. Weitere Informationen finden Sie unter Verwenden von Platzhaltern für Attributnamen und -werte .

    
mkobit 08.07.2015 17:09
quelle
0

Ich würde Update-Ausdrücke betrachten: Ссылка

Sollte mit einem ADD möglich sein, obwohl nicht sicher, was die Unterstützung in Boto dafür ist.

    
Mircea 08.07.2015 17:06
quelle