Shelve to potężny moduł Pythona do utrwalania obiektów. Kiedy odkładasz obiekt na półkę, musisz przypisać klucz, dzięki któremu wartość obiektu jest znana. W ten sposób plik półki staje się bazą danych przechowywanych wartości, do których można uzyskać dostęp w dowolnym momencie.
Przykładowy kod dla Shelve w Pythonie
Aby odłożyć obiekt na półkę, najpierw zaimportuj moduł, a następnie przypisz wartość obiektu w następujący sposób:
półka importowa
baza danych = shelve.open (filename.suffix)
object = Object ()
baza danych ['klucz'] = obiekt
Jeśli chcesz na przykład przechowywać bazę danych zapasów, możesz dostosować następujący kod:
półka importowa
stockvalues_db = shelve.open ('stockvalues.db')
object_ibm = Values.ibm ()
stockvalues_db ['ibm'] = obiekt_obiek
object_vmw = Values.vmw ()
stockvalues_db ['vmw'] = object_vmw
object_db = Values.db ()
stockvalues_db ['db'] = object_db
„Wartości zapasów.db” jest już otwarty, nie trzeba go ponownie otwierać. Zamiast tego możesz otwierać wiele baz danych naraz, pisać do każdej z nich do woli i wychodzić
Pyton aby je zamknąć po zakończeniu programu. Możesz na przykład przechowywać osobną bazę nazw dla każdego symbolu, dołączając następujące elementy do poprzedniego kodu:## zakładając, że półka jest już zaimportowana
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Names.ibm ()
stocknames_db ['ibm'] = nazwa_obiektu
objectname_vmw = Names.vmw ()
stocknames_db ['vmw'] = nazwa_obiektu_vmw
objectname_db = Names.db ()
stocknames_db ['db'] = nazwa_obiektu_db
Zauważ, że każda zmiana nazwy lub sufiksu pliku bazy danych stanowi inny plik, a zatem inną bazę danych.
Wynikiem jest drugi plik bazy danych zawierający podane wartości. W przeciwieństwie do większości plików zapisanych w formatach o własnym stylu, półkowe bazy danych są zapisane w formie binarnej.
Po zapisaniu danych w pliku można je w dowolnym momencie przywołać. Jeśli chcesz przywrócić dane w późniejszej sesji, ponownie otwórz plik. Jeśli jest to ta sama sesja, po prostu przywołaj wartość; odłożyć na półkę pliki bazy danych są otwierane w trybie do odczytu i zapisu. Oto podstawowa składnia do osiągnięcia tego celu:
półka importowa
baza danych = shelve.open (filename.suffix)
object = baza danych [„klucz”]
Przykład z poprzedniego przykładu brzmiałby następująco:
półka importowa
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = plik stockname_file ['ibm']
stockname_db = plik stockname ['db']
Uwagi dotyczące półki
Należy pamiętać, że baza danych pozostaje otwarta, dopóki jej nie zamkniesz (lub dopóki program się nie zakończy). Dlatego jeśli piszesz program dowolnej wielkości, chcesz zamknąć bazę danych po pracy z nim. W przeciwnym razie cała baza danych (nie tylko żądana wartość) pozostaje w pamięci i zużywa zasoby komputerowe.
Aby zamknąć plik półki, użyj następującej składni:
database.close ()
Gdyby wszystkie powyższe przykłady kodu zostały włączone do jednego programu, mielibyśmy dwa pliki bazy danych otwarte i zajmowałyby pamięć w tym momencie. Po przeczytaniu nazw akcji w poprzednim przykładzie można było kolejno zamknąć każdą bazę danych w następujący sposób:
stockvalues_db.close ()
stocknames_db.close ()
stockname_file.close ()