2010-11-19 16 views
3

Wie soll ich Korruption in einer Shelve-Datei verhindern? Sollte das Regal die meiste Zeit geschlossen sein und dann nur geöffnet werden, wenn ich einen Wert lesen oder bearbeiten muss?Verhindern Python Shelve Korruption

+1

Verwenden Sie kein Regal. Es verdirbt. Ich schlage sqlite vor. – nosklo

+0

@nosklo stimmte zu, es ist nicht besonders zuverlässig und seine Verwendung variiert von Plattform zu Plattform. –

Antwort

4

Wenn die Sicherheit Ihrer persistenten Objekte in Ihrem Projekt von großer Bedeutung ist, ist die Verwendung von shelve keine gute Idee. Es werden auch keine Objekte gebeizt und manuell in Dateien geschrieben.

Bedenken Sie, dass echte Datenbanken große Ressourcen (Intelligenz und Code) für die Sicherheit im Falle eines Ausfalls benötigen. Behalte deine Daten also in einer echten Datenbank. Das einfachste wäre sqlite, da es mit Python ausgeliefert wird. sqlite ist ziemlich sicher und verfügt über viele intelligente Funktionen, um Ihre Daten auch bei Systemfehlern in einem gültigen Zustand zu halten (z. B. wenn jemand über das Stromkabel Ihres PCs stolpert).

+3

Würde Shove eine gute Option sein? http://pypi.python.org/pypi/shove – MKaras

+2

@metaguppy: shove sieht wie ein interessanter Ansatz aus und ist ein Frontend für andere Tools wie sqlite und andere DBs. Ich würde es in Erwägung ziehen, es zu benutzen, aber da es nicht gut bekannt ist, würde ich meine wichtigsten Daten nicht ohne ernsthafte Tests und Nachforschungen darin platzieren –