Sto provando a utilizzare la funzionalità update_item
per DynamoDB in boto3.È possibile combinare if_not_exists e list_append in update_item
Al momento sto facendo fatica ad aggiornare gli elenchi per gli articoli. Vorrei creare una nuova lista se la lista non esiste ancora e altrimenti aggiungere all'elenco esistente.
Utilizzando un UpdateExpression
della forma SET my_list = list_append(my_list, :my_value)
restituisce un errore "l'espressione fornita si riferisce a un attributo che non esiste nella voce" se l'elenco non esiste ancora.
Qualche idea su come dovrei modificare il mio UpdateExpression
?
Grazie & migliori saluti, Fabian
Grazie per il suggerimento! Soluzione abbastanza carina. – fabian
Avete qualche idea se questo è soggetto a condizioni di gara? Sto esaminando la documentazione di AWS e non sembrano avere alcun blocco/transazione (almeno per l'SDK di Python). Sembra certamente che questo codice possa: leggere l'elenco dal DB, b: aggiungere il nuovo valore e c: sovrascrivere il vecchio valore, che _could_ è stato modificato nel frattempo. –
Non riesco a trovare una conferma diretta nella documentazione, ma mi aspetterei che l'operazione Single UpdateItem fosse atomica, la cosa più vicina che ho trovato in faq: "È possibile incrementare o decrementare un attributo numerico in una riga utilizzando una singola chiamata API. Allo stesso modo, puoi aggiungere o rimuovere atomicamente insiemi, elenchi o mappe ", vedi https://aws.amazon.com/dynamodb/faqs/ –