Shelve i marynata
Moduł Shelve używa modułu „marynowania” Pythona pod spodem do serializacji danych. Główną różnicą między modułami półprzewodnikami i marynatami jest to, że półki można użyć do powiązania obiektów serializowanych z klawiszami. Klawisze te mogą być używane jako identyfikatory w twoim kodzie i możesz odwołać się do nich, aby uzyskać serializowany obiekt. Z drugiej strony marynata nie zapewnia natywnego sposobu przechowywania serializowanych danych w parach kluczowych, bez żadnych obejść lub kodu niestandardowego. Zatem Shelve jest bardziej modułem wygody dla łatwej serializacji obiektów Python i może być używana do tworzenia prostych baz danych zawierających serializowane dane.
Podstawowe użycie i składnia
Możesz otworzyć plik bazy danych za pomocą metody „otwórz” dostępnej w module Shelve. Ta metoda może być używana jako menedżer kontekstowy, aby ten plik został poprawnie zamknięty, gdy połączenie metody zakończy się. Oto próbka kodu:
Importuj półkiPierwsze oświadczenie importuje główny moduł Shelve do programu Python. Następnie używając „z Shelve.Otwórz ”Metod Call and Context Manager„ Testuj.plik db ”jest otwarty jako„ db ”w trybie zapisu. Plik może mieć dowolną nazwę i rozszerzenie. Dwa ostatnie instrukcje służą do utworzenia dwóch nowych par kluczowych przy użyciu składni przypominającej Python Słownik. Te pary wartości kluczowej są następnie przechowywane w teście.plik db w serialu.
Po wykonaniu powyższej próbki kodu, jeśli otworzysz test.plik DB w edytorze tekstu należy zobaczyć niektóre dane podobne do tego:
Jak widać, dane przechowywane w pliku nie są w formie czytelnej ludzkiej. Jeśli jednak otworzysz ten plik za pomocą Shelve, będziesz mógł pobrać pary wartości kluczowej w programie Python. Oto próbka kodu:
Importuj półkiPary wartości kluczowej serializowane według półki są identyczne z obiektem typu słownika w Pythonie i popierają wszystkie swoje metody. Dzięki czemu możesz odwołać się do obiektów, dostarczając klucz do kwadratowych aparatów ortodontycznych. W dwóch ostatnich instrukcjach wartość obu klawiszy jest pobierana za pomocą składni podobnej do słownika. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:
50Zauważ, że Python automatycznie wybiera odpowiedni format pliku bazy danych dla Shelve, biorąc pod uwagę system operacyjny, z którego program jest wykonywany. Nie wpływa to jednak na użycie modułu półki i funkcjonalności obiektów serializowanych za pomocą go.
Uzyskanie wszystkich par kluczowych z pliku bazy danych utworzonych za pomocą Shelve
Aby uzyskać wszystkie klucze i pary wartości, musisz wywołać metody „klawisze” i „wartości”, tak jak zrobiłby to z obiektem typu słownika w Python. Oto próbka kodu:
Importuj półkiJak widać w powyższej próbce kodu, wywołano metody „elementy”, „klawisze” i „wartości” w celu pobrania klawiszy i wartości. Te klucze i wartości są obiektami typu Shelve, więc musisz przekonwertować je na listę lub inne możliwe do uzyskania ich rzeczywistych wartości. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:
[(„jabłka”, 50), („pomarańcze”, 80)]Zauważ, że jeśli chcesz po prostu iterować klawisze i wartości, możesz to zrobić za pomocą pętli lub innych instrukcji bez konwersji kluczy i wartości na listę Pythona lub innego takiego obiektu.
Możesz serializować funkcje i klasy za pomocą półki
Możesz serializować dowolny obiekt Python za pomocą modułu Shelve, nawet funkcji i klas. Oto przykład ilustrujący serializację funkcji, odzyskiwanie jej z powrotem, a następnie wzywając ją do wykonania niektórych obliczeń.
Importuj półkiZdefiniowano nową funkcję o nazwie „kwadrat”. Oblicza kwadrat liczby i zwraca go. Następnie ta funkcja jest serializowana przy użyciu półki i przechowywana w teście.plik bazy danych db. Funkcja serializowana jest następnie odczytywana z powrotem do zmiennej „kwadratowej”. Ponieważ zmienna kwadratowa jest teraz instancją funkcji kwadratowej zdefiniowanej wcześniej, możesz nazwać ją obliczeniem kwadratu liczby.
Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:
25Wniosek
Serializacja to proces przechowywania obiektów Pythona w pliku bazy danych, aby można je było odzyskać w formie dokładnie tak samo, jak pierwotnie zdefiniowano je przed serializacją. To pozwala przechowywać złożone obiekty Pythona w formacie strukturalnym. Moduł Shelve wykorzystuje moduł marynaty do przechowywania i pobierania serializowanych obiektów Pythona. Wykorzystuje strukturę pary wartości kluczowej do obsługi serializowanych obiektów, ułatwiając nimi zarządzanie.