MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Programowanie baz danych w Pythonie z MongoDB dla początkujących

Celem tego samouczka programowania baz danych w Pythonie jest zapewnienie delikatnego wprowadzenia do korzystania z bazy danych NoSQL jako magazynu danych dla aplikacji Python. Docelowi odbiorcy to programiści początkujący lub średniozaawansowani, którzy są zaznajomieni z używaniem baz danych zorientowanych na SQL, takich jak Oracle, SQL Server lub MySQL. Demonstracje w tym artykule będą równoległe z demonstracjami używanymi w innych artykułach dotyczących programowania bazy danych SQL dotyczących Pythona, takich jak Python Database Programming with SQL Express for Beginners, i podobnie będą używać języka Python 3.

Co to jest NoSQL?

Popularność Pythona wciąż rośnie, po części ze względu na łatwość, z jaką może współpracować z nowymi technologiami. Jedną z takich „nowych” technologii jest wykorzystanie baz danych „NoSQL”. Jedną z najbardziej atrakcyjnych cech tego typu baz danych jest fakt, że jak sama nazwa wskazuje, w zasadzie nie ma żadnego dodatkowego języka zapytań, takiego jak jeden z pozornie wielu wariantów SQL, którego trzeba się nauczyć, aby pracować z bazą danych z programistycznego punktu widzenia. To znacznie ułatwia tworzenie aplikacji, ponieważ natywne struktury danych języka programowania i jego składnia są de facto „językiem zapytań”, oczywiście pod warunkiem, że do środowiska programistycznego zostaną dodane odpowiednie moduły.

Bazy danych NoSQL, oprócz głównie nie używając języka zapytań, również wewnętrznie strukturyzuj dane w sposób znacznie odmienny od baz danych SQL. Programista, który jest bardziej przyzwyczajony do paradygmatu programowania SQL, musi dostosować swoje myślenie do sposobu, w jaki NoSQL prowadzi działalność. Idąc dalej pod maską, konstrukcja serwerów baz danych NoSQL ma tę samą odmienność. Serwery baz danych NoSQL są bardziej skoncentrowane na szybkości i skalowalności z „ostateczną spójnością”, w przeciwieństwie do serwerów baz danych SQL, które koncentrują się bardziej na natychmiastowej spójności.

Co to jest MongoDB?

MongoDB to jedna z wielu baz danych „NoSQL”. Podobnie jak MariaDB, używa własnego systemu nazw użytkownika i haseł do zarządzania dostępem. MongoDB, oprócz oferowania bezkosztowego oprogramowania serwerowego do pobrania, oferuje również bezkosztową opcję wprowadzającą opartą na chmurze (za pośrednictwem swojego Atlasu oferta), co ogranicza potrzebę pobierania i konfigurowania instancji. Demonstracje w tym samouczku programowania baz danych będą korzystać z hostowanej w chmurze bezpłatnej instancji MongoDB.

Podobnie jak w przypadku Pythona i dowolnego serwera bazy danych, dodatkowy moduł sterownika bazy danych, a mianowicie PyMongo , jest wymagane, aby Python mógł komunikować się z serwerem MongoDB i wszystkimi zawartymi w nim bazami danych. Co więcej, jak każdy serwer bazy danych, MongoDB zapewnia towarzyszące narzędzie do zarządzania o nazwie MongoDB Shell . Demonstracje w tym artykule będą wykorzystywać bazę danych MongoDB utworzoną za pomocą tego narzędzia. Zauważ, że MongoDB Shell jest jednym z wielu narzędzi do zarządzania, które istnieją dla MongoDB.

  • Pobieranie serwera społeczności MongoDB
  • Bezkosztowa oferta wprowadzająca w chmurze MongoDB
  • Pobieranie powłoki MongoDB

Należy pamiętać, że zamieszczone linki były aktywne w momencie pisania tego artykułu. Jeśli linki nie są już aktywne, produkty te można pobrać za pomocą preferowanej wyszukiwarki.

Jak skonfigurować MongoDB do tworzenia oprogramowania

Bezkosztowa oferta wprowadzająca oparta na chmurze MongoDB konfiguracja jest całkowicie internetowa. Można go wygodnie połączyć z kontem Google w celu jednokrotnego logowania. Pamiętaj tylko o następujących zastrzeżeniach:

  • Wybierz usługę hostingu danych, która fizycznie znajduje się w pobliżu. Usługa hostingowa pokazana w tym artykule, która znajduje się w Wirginii, może nie być idealna dla kogoś, kto jest daleko.
  • Hasło używane do łączenia aplikacji z serwerem bazy danych musi być bezpiecznie zapisane, ponieważ nie można go odzyskać w przypadku utraty. Można go tylko zresetować.
  • Po ustawieniu nazwy klastra nie można zmienić. Demonstracje w tym artykule będą używać klastra o nazwie Cluster0 .
  • Upewnij się, że każdy adres IP, z którego dowolna aplikacja, w tym MongoDB Shell, jest skonfigurowany w ustawieniach bezpieczeństwa.
  • Powłoka MongoDB może nie mieć programu instalacyjnego. Zawsze upewnij się, że ścieżka do folderu zawierającego tę aplikację jest zawarta w ścieżce systemu operacyjnego.

Jak połączyć się z serwerem bazy danych MongoDB

Po pomyślnym skonfigurowaniu klastra MongoDB opartego na chmurze konieczne będzie zanotowanie konkretnego ciągu połączenia używanego do połączenia się z nim. Poniższe ciągi można również pobrać, logując się do MongoDB Atlas Site i klikając przycisk Połącz przycisk:

Rysunek 1 – Pulpit nawigacyjny MongoDB Atlas z podświetlonym przyciskiem Połącz

Uwaga, ustawienia takie jak nazwa użytkownika bazy danych i hasło oraz dozwolone zakresy adresów IP dla połączenia można ustawić odpowiednio w linkach Dostęp do bazy danych i Dostęp do sieci.

Poniżej znajdują się dwa przykłady połączeń. Pierwszy dotyczy powłoki MongoDB.

MongoDB:łączenie z wiersza poleceń

Otwieranie Wiersza poleceń Windows jest wyjaśnione w Python Database Programming with SQL Express for Beginners w sekcji Otwieranie okien wiersza poleceń nagłówek.

Rysunek 2 – Łączenie za pomocą wiersza poleceń z powłoką MongoDB

Pamiętaj, że polecenie otwarcia powłoki MongoDB zależy od systemu operacyjnego. Nazwa klastra może się różnić, a podświetlone parametry w poleceniu będą musiały zostać zmienione na szczegóły konfiguracji MongoDB opartej na chmurze. W systemie Windows to polecenie nazywa się mongosh . Zwróć uwagę, że nazwa bazy danych RazorDemo znajduje się poniżej, ponieważ jest to baza danych, która będzie używana w demonstracjach w tym samouczku programowania. Polecenie akceptuje również dodatkowy parametr hasła, jak pokazano poniżej:

Ilustracja 3 – Uwierzytelnianie za pomocą hasła w wierszu poleceń.

Pamiętaj, że chociaż do celów programistycznych wygodnie jest używać hasła w wierszu poleceń, w przeciwieństwie do konieczności wpisywania go za każdym razem, pamiętaj, że hasło pojawia się w historii poprzednio wykonywanych poleceń. Ta opcja nie powinna być używana w środowiskach programistycznych, w których inni użytkownicy mogą uzyskać dostęp do swojej poprzedniej historii poleceń.

Miejmy nadzieję, że nikt nie pomyślał, że faktycznie użyję 123456 jako hasło, prawda?

Ilustracja 4 – Po prostu sprawdzam 🙂

Zauważ, że w obu powyższych przykładach ^ znak jest używany jako symbol kontynuacji linii w wierszu poleceń systemu Windows.

Łączenie MongoDB z Pythona

Poniższy ciąg, z odpowiednimi zmianami, może zostać umieszczony w kodzie Pythona do użytku przez PyMongo kierowca:

Rysunek 5 – Łączenie przez Pythona i PyMongo

W powyższym ciągu połączenia nazwa bazy danych RazorDemo zostanie użyty zamiast myFirstDatabase .

Jak utworzyć bazę danych w MongoDB

MongoDB nie „tworzy” bazy danych, dopóki ta baza nie zostanie „użyta” i dane nie zostaną w niej faktycznie zapisane. Poniższy obrazek pokazuje udane połączenie z usługą MongoDB Atlas przy użyciu RazorDemo bazy danych, ale nie ma takiej bazy danych podczas korzystania z pokaż bazy danych polecenie:

Rysunek 6 – Brak bazy danych RazorDemo… jeszcze

Jak „korzystać” z bazy danych w MongoDB

W MongoDB baza danych jest „używana” za każdym razem, gdy jest połączona bezpośrednio za pomocą ciągu zapytania lub gdy nazwa bazy danych jest argumentem use Komenda. Zwróć uwagę, jak wywołanie tego polecenia w aktualnie wybranej bazie danych powoduje wyświetlenie innego komunikatu niż przejście do tej bazy danych:

Rysunek 7 – Przełączanie między bazami danych

Aby faktycznie „utworzyć” bazę danych, należy wprowadzić pewne dane. RazorDemo baza danych z poprzednich artykułów, Pierwsze kroki z Razor Pages przy użyciu C# i programowania baz danych w języku Python z SQL Express dla początkujących, wykorzystuje dwie tabele, a mianowicie Artyści i Albumy . W MongoDB to, co zorientowana na SQL baza danych nazywa tabelą, jest określane jako kolekcja . Tworzenie dwóch wpisów do kolekcji o nazwie Artyści i Albumy , odpowiednio, utworzy zarówno bazę danych, jak i kolekcje.

Każdy wpis w kolekcji jest określany jako dokument . Jest to analogiczne do rekordu w tabeli bazy danych zorientowanej na SQL.

Uwaga, tak jak ważne jest, aby główna aplikacja zapisała utwórz tabelę instrukcji w bazie danych zorientowanej na SQL, to samo rozumowanie będzie również miało zastosowanie do początkowej bazy danych i poleceń tworzenia kolekcji dla bazy danych MongoDB dla głównej aplikacji.

Poniższe polecenia stworzą Wykonawców kolekcji, wstawiając do niej pojedynczy dokument, a następnie wysyłając zapytanie do Artystów kolekcja, aby zweryfikować powodzenie operacji wstawiania. Zwróć uwagę, jak operacja wstawiania wykorzystuje składnię JSON:

db.Artists.insertOne({artist_name: "Skeered Tigon Stripes"})

db.Artists.find({})

Listing 1 - Inserting a new document.

Te polecenia dają następujące dane wyjściowe w powłoce MongoDB:

Ilustracja 8 – Tworzenie kolekcji artystów

_id pokazane powyżej zostało utworzone automatycznie i jest unikalne w ramach kolekcji, podobnie jak automatycznie wygenerowana wartość klucza podstawowego w bazie danych zorientowanej na SQL.

Uwaga, MongoDB Shell może zgłosić, że .insert() polecenie jest przestarzałe. W tym przykładzie użyto .insertOne() polecenie, ponieważ jest to jedna z dostarczonych alternatyw.

Podobna składnia może być użyta do tworzenia Albumów kolekcja:

db.Albums.insertOne({artist_name: "Skeered Tigon Stripes",album_name: "Genetically Engineered Critters"})

db.Albums.find({})

Listing 2 - Inserting another new document

Rysunek 9 – Tworzenie kolekcji albumów

Uwaga, ostrzeżenie związane z caniuse-lite pojawia się po naciśnięciu klawisza Enter przed wykonaniem polecenia tworzenia dokumentu. MongoDB Shell pozwoli na złamanie polecenia w wielu wierszach przed jego zakończeniem. To ostrzeżenie wskazuje, że MongoDB Shell może używać przestarzałego sterownika i będzie musiał zostać zaktualizowany w przyszłej wersji.

Wygląda na to, że nie przerywa to procesu tworzenia dokumentu.

Więcej dokumentów do Albumów kolekcja:

db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Volume Control: No" })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Verse Vica })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Rotten to the Core" })

db.Albums.find({})

Listing 3 - Additional documents for the Albums collection

Rysunek 10 – Nowe dodatkowe dokumenty albumu

BRAK ograniczeń dotyczących kluczy obcych

Ponieważ MongoDB nie jest systemem zarządzania relacyjnymi bazami danych, nie zapewnia mechanizmu wymuszania rodzajów ograniczeń kluczy obcych używanych w tabelach baz danych zorientowanych na SQL między kolekcjami. Oczekuje od aplikacji utrzymywania i egzekwowania takich relacji. W kontekście MongoDB Shell obowiązkiem programisty jest prawidłowe wpisanie wartości, aby zapewnić wywnioskowanie związku między dokumentami w kolekcjach.

.deleteOne() można użyć polecenia do usunięcia błędnie wprowadzonych dokumentów:

db.Albums.deleteOne({ artist_name: "Skeered Tigon Stripes", album_name: "I Typed the Album Name Wrong" })
Listing 4 - Deleting a document.

Zwróć uwagę, że jeśli dokument nie pasuje do wprowadzonych parametrów, nie zostanie wyświetlony żaden błąd, zamiast tego komunikat potwierdzający pokaże, że nic nie zostało usunięte:

Ilustracja 11 – Komunikat potwierdzający, w którym żadne dokumenty nie zostały usunięte

.deleteMany() Polecenie może służyć do usuwania wielu rekordów spełniających kryteria JSON. Poniższe polecenie usuwa wszystkie dokumenty w kolekcjach albumów, w których artist_name wartość nie jest Skeered Tigon Stripes :

db.Albums.deleteMany({artist_name: {$ne : "Skeered Tigon Stripes" }})

Listing 5 - Deleting multiple documents based on criteria.

Rysunek 12 – Usuwanie wielu rekordów

Ostatnie przemyślenia na temat programowania baz danych w Pythonie za pomocą MongoDB

Teraz, gdy nauczyliśmy się, jak łączyć się z bazą danych MongoDB i jak tworzyć tabelę z „rekordami” w wersji BEZ SQL, możemy przejść do pracy ze skryptami Pythona w celu wstawiania danych do naszej bazy danych MongoDB. Będziemy kontynuować tę dyskusję w drugiej – i ostatniej – części tego samouczka programowania baz danych w Pythonie:Tworzenie baz danych w Pythonie i MongoDB.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sprawdzanie, czy indeks istnieje w mongodb

  2. node.js nie może znaleźć modułu „mongodb”

  3. 10 wskazówek, jak poprawić bezpieczeństwo MongoDB

  4. Wiele zliczeń z jednym zapytaniem w mongodb

  5. MongoDB — Zapytanie o ostatni element tablicy?