boto dynamodb batch_write et delete_item — 'La condition élément clé ne correspond pas au schéma"
Je suis en train de supprimer un grand nombre d'éléments dans une table DynamoDB à l'aide de boto et python. Ma Table est mis en place avec la clé primaire comme un ID de périphérique (pense que l'adresse MAC.) Il y a plusieurs entrées dans la table pour chaque ID de l'appareil, comme la clé secondaire est un timestamp UNIX.
De ma lecture de ce code devrait fonctionner:
from boto.dynamodb2.table import Table
def delete_batch(self, guid):
table = Table('Integers')
with table.batch_write() as batch:
batch.delete_item(Id=guid)
Source: http://docs.pythonboto.org/en/latest/dynamodb2_tut.html#batch-writing
Toutefois il renvoie 'La condition élément clé ne correspond pas au schéma" comme le message d'erreur.
Je soupçonne que le problème est que guid n'est pas unique dans ma table.
Étant donné que, est-il moyen de supprimer plusieurs éléments avec la même clé primaire sans spécifier la clé secondaire?
Integers
schéma?{"Id" : chaîne de caractères, "Date" : "Temp" : nombre, "Probenum" : nombre} Primaire Clé de Hachage: Id (String) Plage Principale Clé: Date (Nombre)
Votre lot de demande ne correspond pas au schéma, en effet. Merci de regarder cette question pour trouver des solutions possibles:what-is-the-recomended-way-to-delete-a-large-number-of-items-from-dynamodb.
OriginalL'auteur Matt Manuel | 2014-02-16
Vous devez vous connecter pour publier un commentaire.
Vous ne fournissant que le hachage partie de la clé et non pas d'un point de hachage+plage) - c'est pourquoi vous obtenez une erreur et ne peut pas supprimer des éléments.
Vous ne pouvez pas demander à DynamoDB pour supprimer tous les éléments avec une valeur de hachage de la clé (la même manière, la Requête est tous)
Lire cette réponse par Steffen pour plus d'informations
guid
et de supprimer la table quand je suis fait avec elle. Trop mauvais DynamoDB ne supporte pas les supprimer en vrac, mais je suis sûr qu'il ya quelques architectural raison pour cela.Bien écrit sont chers. en vrac écrit (supprime) sont difficiles à mettre en œuvre et sont aussi un peu contre le dynamodb approvisionné approche (qui tente de forcer l'utilisation comme prédit que possible). Bonne chance
OriginalL'auteur Chen Harel