Wie lösche ich eine Spalte (Attribut) aus einem GAE-Datenspeicher?

8

Ich habe eine persistente Klasse in einem GAE-Datenspeicher gespeichert. Ich habe eines der Attribute aus der Klasse entfernt. Die neuen Datensätze in dieser Tabelle zeigen einen Wert <none & gt; für das entfernte Attribut. Aber gibt es eine Möglichkeit, dass ich diese Kolumne komplett vom Tisch fallen lassen kann?

Danke.

Nach dem Moraes-Vorschlag wurde der folgende "Migrations" -Code hinzugefügt, der jedoch nicht das gewünschte Ergebnis erzielt:

%Vor%     
DFB 16.05.2011, 09:30
quelle

4 Antworten

6

Ich habe die Antwort auf dieses Problem in diesem Artikel gefunden: Ссылка

" Gelöschte Eigenschaften aus dem Datenspeicher entfernen

Wenn Sie eine Eigenschaft aus Ihrem Modell entfernen, werden Sie feststellen, dass vorhandene Entitäten immer noch die Eigenschaft besitzen. Es wird weiterhin in der Verwaltungskonsole angezeigt und ist weiterhin im Datenspeicher vorhanden. Um die alten Daten wirklich zu bereinigen, müssen Sie Ihre Entitäten durchlaufen und die Daten aus den einzelnen entfernen.

  • Stellen Sie sicher, dass Sie die Eigenschaften aus der Modelldefinition entfernt haben.

  • Wenn Ihre Modellklasse von db.Model erbt, können Sie sie vorübergehend von db.Expando erben. (db.Model-Instanzen können nicht dynamisch geändert werden, was wir im nächsten Schritt tun müssen.)

  • Durchlaufe bestehende Entitäten (wie oben beschrieben). Verwenden Sie für jede Entität delattr , um die veraltete Eigenschaft zu löschen und anschließend die Entität zu speichern.

  • Wenn Ihr Modell ursprünglich von db.Model geerbt wurde, vergessen Sie nicht, es nach dem Aktualisieren aller Daten zu ändern. "

Und hier ist ein Beispiel mit Code: Ссылка

    
Ryan Bavetta 12.03.2012, 05:50
quelle
7

Wenn Sie ndb verwenden (und Sie sollten das wahrscheinlich tun), können Sie sie einfach löschen Eigenschaften, indem Sie sie aus entity._properties löschen:

%Vor%

Oder Sie könnten es schneller machen, indem Sie asynchron Abfragekarte :

%Vor%     
Attila O. 27.02.2013 15:35
quelle
5

Es gibt kein Konzept für "Tabelle" im Datenspeicher. Jede Entität kann beliebige Eigenschaften haben, die keinem gemeinsamen Schema folgen. Das einzige "Schema" befindet sich in Ihrem Modellcode und vorhandene Datensätze ändern sich nicht automatisch, wenn Sie Ihre Modelle ändern.

Um die Eigenschaft aus vorhandenen Datensätzen zu löschen, müssen Sie also alle Datensätze durchlaufen und sie ohne die Eigenschaft erneut speichern.

    
moraes 16.05.2011 11:31
quelle
3

Der Datenspeicher-Viewer ruft eine Liste mit Spalten aus den Datenspeicherstatistiken ab, die regelmäßig aktualisiert werden. Wenn Sie diese Spalte von allen Entitäten entfernt haben, die sie hatten, warten Sie ein bis zwei Tage, bis der Datenspeicher-Viewer sie nicht mehr anzeigt.

    
Nick Johnson 16.05.2011 22:06
quelle