Verwenden von Shelve zum Speichern von Objekten in Python

Shelve ist ein leistungsstarkes Python-Modul für die Objektpersistenz. Wenn Sie ein Objekt zurückstellen, müssen Sie einen Schlüssel zuweisen, unter dem der Objektwert bekannt ist. Auf diese Weise wird die Regaldatei zu einer Datenbank gespeicherter Werte, 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 den Objektwert dann wie folgt zu:

 Importregal 
database = shelve.open (Dateiname.suffix)
Objekt = Objekt ()
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. Stattdessen können Sie mehrere Datenbanken gleichzeitig öffnen, nach Belieben in jede Datenbank schreiben und die Datenbank verlassen

instagram viewer
Python um sie zu schließen, wenn das Programm beendet wird. Sie können beispielsweise eine separate Datenbank mit Namen für jedes Symbol führen und Folgendes an den vorhergehenden Code anhängen:

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

Beachten Sie, dass jede Änderung des Namens oder des Suffix der Datenbankdatei eine andere Datei und daher eine andere Datenbank darstellt.

Das Ergebnis ist eine zweite Datenbankdatei, die die angegebenen Werte enthält. Im Gegensatz zu den meisten Dateien, die in selbst gestalteten Formaten geschrieben wurden, sind Datenbanken in Regalen Gerettet in binärer Form.

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 ab. Regal Datenbankdateien werden im Lese- / Schreibmodus geöffnet. Das Folgende ist die grundlegende Syntax, um dies zu erreichen:

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

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 Speicher und wird verbraucht Rechenressourcen.

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

 database.close () 

Wenn alle oben genannten Codebeispiele in einem Programm enthalten wären, wären zu diesem Zeitpunkt zwei Datenbankdateien geöffnet und würden Speicher verbrauchen. Nachdem Sie die Aktiennamen im vorherigen Beispiel gelesen haben, können Sie jede Datenbank nacheinander wie folgt schließen:

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