Wie lege ich ein Wörterbuch in den Datenspeicher?

8

Gibt es eine gute Möglichkeit, ein Python-Wörterbuch im Datenspeicher zu speichern? Ich möchte etwas wie das Folgende tun:

%Vor%

Natürlich funktioniert diese letzte Zeile nicht wirklich. Ich brauche Hops, um eine Liste der Schlüssel-Wert-Paare zu sein, wobei der Schlüssel immer eine Zeichenkette ist und der Wert eine Zeichenkette, int oder float sein kann, aber ich sehe nichts darin würde mir erlauben, das in der Eigenschaftsklassen .

    
Dan Hook 11.11.2009, 18:03
quelle

6 Antworten

7

Das Serialisieren eines Dict mit repr ist ein guter Weg, dies zu tun. Sie können es dann mit eval wiederherstellen oder, wenn Sie den Daten nicht vertrauen, ein " safe eval " .

Ein Vorteil gegenüber dem Beizen ist, dass die Daten in der Datenbank lesbar sind, sogar in verzweifelten Fällen abfragbar.

    
Ned Batchelder 11.11.2009, 18:09
quelle
7

Sie können json

verwenden     
John La Rooy 11.11.2009 19:44
quelle
2

Sie könnten das Wörterbuch pickern und es als StringProperty speichern.

    
John Paulett 11.11.2009 18:06
quelle
2

Ich bin mir ziemlich sicher, dass es keine Möglichkeit gibt, ein Python-Wörterbuch zu speichern. Aber warum nicht einfach als zweites Modell Hops platzieren?

Auch, wie von John erwähnt, könnten Sie Pickle verwenden, aber (und korrigieren Sie mich, wenn ich falsch liege) speichern Sie es als Blob Wert stattdessen.

    
Bartek 11.11.2009 18:09
quelle
1

Ihre Optionen bestehen im Grunde darin, Pickle zu verwenden, ein db.Expando zu verwenden und jedem Schlüssel im dict eine separate Eigenschaft zu geben, oder eine StringListProperty von Schlüsseln und einem der Werte und zip () zurück zu einem dict beim Lesen zu haben .

    
geoffspear 11.11.2009 18:10
quelle
0

Ich habe es so gemacht:

%Vor%     
MdaG 15.05.2013 08:54
quelle