Ich bin ein neuer Benutzer in boto3 und verwende DynamoDB
.
Ich ging über die DynamoDB API und ich konnte keine Methode finden, die mir sagt, ob eine Tabelle bereits existiert.
Was ist der beste Ansatz, um dieses Problem zu lösen?
Sollte ich versuchen, eine neue Tabelle zu erstellen und sie mit try catch zu umbrechen?
Nach dem Lesen der Dokumentation kann ich sehen, dass es drei Methoden gibt, mit denen Sie überprüfen können, ob eine Tabelle existiert.
ResourceInUseException
aus, wenn die Tabelle bereits existiert. Umbrechen Sie die create_table-Methode mit try, außer um das ResourceNotFoundException
aus, wenn der Tabellenname Sie lautet Anfrage existiert nicht. Für mich klingt die erste Option besser, wenn Sie nur eine Tabelle erstellen möchten.
Bearbeiten: Ich sehe, dass manche Leute Schwierigkeiten haben, die Ausnahmen zu erfassen. Ich werde unten einen Code schreiben, damit Sie wissen, wie Sie mit Ausnahmen in boto3 umgehen können.
Beispiel 1
%Vor%Beispiel 2
%Vor%Beispiel 3
%Vor%Sie können die API describe table verwenden, um festzustellen, ob die Tabelle vorhanden ist.
Beispielcode:
%Vor%Wenn die Tabelle existiert: -
Wenn die Tabelle nicht existiert: -
Sie erhalten ResourceNotFoundException
botocore.errorfactory.ResourceNotFoundException: Ein Fehler ist aufgetreten (ResourceNotF oundException) beim Aufrufen der DescribeTable-Operation: Operationen können nicht ausgeführt werden eine nicht vorhandene Tabelle
Eine andere Möglichkeit: -
%Vor%Wartet bis diese Tabelle existiert. Diese Methode ruft auf DynamoDB.Waiter.table_exists.wait () fragt ab. DynamoDB.Client.describe_table () alle 20 Sekunden bis ein erfolgreicher Status ist erreicht. Nach 25 fehlgeschlagenen Überprüfungen wird ein Fehler zurückgegeben.
Sie können .table_status bei jedem boto3 verwenden Tabelleninstanzobjekt Er gibt seinen Status zurück, wenn er existiert (ERSTELLEN, AKTUALISIEREN, LÖSCHEN, AKTIV) oder gibt die Ausnahme botocore.exceptions.ClientError: Requested resource not found: Table: <YOUR_TABLE_NAME> not found
aus. Sie können diese Bedingungen in try / except umwandeln, um vollständige Informationen über den aktuellen Tabellenstatus zu erhalten.
Tags und Links python boto3 amazon-dynamodb