Verwenden von Shelve zum Speichern von Objekten in Python

Shelve ist ein leistungsstarkes Python-Modul für die Objektpersistenz. Wenn Sie ein Objekt ablegen, müssen Sie einen Schlüssel zuweisen, unter dem der Objektwert bekannt ist. Auf diese Weise wird die Regaldatei zu einer Datenbank mit gespeicherten Werten, auf die jederzeit zugegriffen werden kann.

Beispielcode für Shelve in Python

Um ein Objekt zu speichern, importieren Sie zuerst das Modul und weisen Sie dann den Objektwert wie folgt zu:

 Importregal
database = shelve.open (filename.suffix)
object = Object ()
Datenbank ['Schlüssel'] = Objekt

Wenn Sie beispielsweise eine Bestandsdatenbank führen möchten, können Sie den folgenden Code anpassen:

 Importregal
stockvalues_db = shelve.open ('stockvalues.db')
object_ibm = Values.ibm ()
stockvalues_db ['ibm'] = object_ibm
object_vmw = Values.vmw ()
stockvalues_db ['vmw'] = object_vmw
object_db = Values.db ()
stockvalues_db ['db'] = object_db

Eine "stock values.db" ist bereits geöffnet, Sie müssen sie nicht erneut öffnen. Sie können stattdessen mehrere Datenbanken gleichzeitig öffnen, nach Belieben in jede Datenbank schreiben und Python verlassen, um sie zu schließen, wenn das Programm beendet wird. Sie können beispielsweise für jedes Symbol eine eigene Datenbank mit Namen führen und dem vorhergehenden Code Folgendes hinzufügen:

 ## vorausgesetzt, das Regal ist bereits importiert
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Names.ibm ()
stocknames_db ['ibm'] = Objektname_ibm
objectname_vmw = Names.vmw ()
stocknames_db ['vmw'] = Objektname_vmw
objectname_db = Names.db ()
stocknames_db ['db'] = Objektname_db

Beachten Sie, dass jede Änderung am Namen oder Suffix der Datenbankdatei eine andere Datei und damit eine andere Datenbank darstellt.

Das Ergebnis ist eine zweite Datenbankdatei mit den angegebenen Werten. Im Gegensatz zu den meisten Dateien, die in selbst gestalteten Formaten geschrieben wurden, werden gespeicherte Datenbanken in binärer Form gespeichert.

Nachdem die Daten in die Datei geschrieben wurden, können sie jederzeit abgerufen werden. Wenn Sie die Daten in einer späteren Sitzung wiederherstellen möchten, öffnen Sie die Datei erneut. Wenn es sich um dieselbe Sitzung handelt, rufen Sie einfach den Wert auf. Shelve-Datenbankdateien werden im Lese- / Schreibmodus geöffnet. Das Folgende ist die grundlegende Syntax, um dies zu erreichen:

 Importregal
database = shelve.open (filename.suffix)
object = database ['key']

Ein Beispiel aus dem vorhergehenden Beispiel würde also lauten:

 Importregal
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['IBM']
stockname_db = stockname_file ['db']

Überlegungen mit Shelve

Es ist wichtig zu beachten, dass die Datenbank geöffnet bleibt, bis Sie sie schließen (oder bis das Programm beendet wird). Wenn Sie also ein Programm beliebiger Größe schreiben, möchten Sie die Datenbank schließen, nachdem Sie damit gearbeitet haben. Andernfalls befindet sich die gesamte Datenbank (nicht nur der gewünschte Wert) im Arbeitsspeicher und beansprucht Rechenressourcen.

Verwenden Sie die folgende Syntax, um eine Shelve-Datei zu schließen:

 database.close () 

Wenn alle obigen Codebeispiele in einem Programm enthalten wären, wären zu diesem Zeitpunkt zwei Datenbankdateien geöffnet, die Speicher belegen. Nachdem Sie also die Aktiennamen im vorherigen Beispiel gelesen haben, können Sie jede Datenbank der Reihe nach wie folgt schließen:

 stockvalues_db.close ()
stocknames_db.close ()
stockname_file.close ()