boto dynamodb batch_write und delete_item — 'Das wesentliche element entspricht nicht dem schema'
Ich versuche zu löschen, eine große Anzahl von Elementen in einer DynamoDB-Tabelle mit boto und python. Meine Tabelle mit dem Primärschlüssel als eine Geräte-ID (glaube die MAC-Adresse.) Gibt es mehrere Einträge in der Tabelle für jedes der Geräte-ID, die als sekundäre Schlüssel ist ein UNIX-timestamp.
Aus meiner Lektüre, sollte dieser code funktionieren:
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)
Quelle: http://docs.pythonboto.org/en/latest/dynamodb2_tut.html#batch-writing
Aber es gibt 'Das wesentliche element entspricht nicht dem schema' als Fehlermeldung.
Ich vermute, das problem ist, da die guid nicht eindeutig in meiner Tabelle.
Da, ist es Weg, löschen mehrere Artikel mit dem gleichen Primärschlüssel haben, ohne die Angabe der sekundären Schlüssel?
- Was ist Ihre
Integers
schema? - {"Id" : string, "Datum" : Zahl, "Temp" : Zahl, "Probenum" : Nummer} Primären Hash-Schlüssel: Id (String) Primäre Range-Taste: Datum (Zahl)
- Ihre batch-Anforderung entspricht nicht dem schema in der Tat. Schauen Sie bitte in dieser Frage für mögliche Lösungen:what-is-the-recomended-way-to-delete-a-large-number-of-items-from-dynamodb.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Sie bereitstellen, werden nur die hash-Teil des Schlüssels und nicht auf ein Element (hash+Bereich) - dies ist, warum Sie eine Fehlermeldung erhalten und können keine Elemente löschen.
Können Sie nicht Fragen, DynamoDB, um zu löschen Sie alle Einträge mit einem hash-key (auf die gleiche Weise-Abfrage bekommt Sie alle)
Lesen diese Antwort von Steffen weitere Informationen
guid
und dann in der Tabelle löschen, wenn ich fertig bin mit ihm. Schade DynamoDB nicht unterstützt bulk-löschen, aber ich bin sicher, es gibt einige architektonische Grund dafür.