WEBINARHow to build smarter AI apps with Python and MongoDB. Register now >
NEWHow to build smarter AI apps with Python and MongoDB. Register now >

Verwenden von Python mit MongoDB

Verfolgen mit Atlas
Noch heute kostenlos verbinden

Python, die führende Programmiersprache der Datenwissenschaft, und MongoDB mit seinem flexiblen und dynamischen Schema sind hervorragend beispielsweise zum Erstellen moderner Webanwendungen, JSON-APIs, Datenprozessoren und für vieles mehr geeignet. MongoDB verfügt über einen nativen Python-Treiber und ein Team von Technikern, die sich jederzeit um die nahtlose Zusammenarbeit von MongoDB und Python bemühen.

Inhaltsverzeichnis
Was ist Python?

Python, das „Schweizer Taschenmesser“ unter den dynamisch typisierten Sprachen von heute, bietet umfassende Unterstützung für gängige Datenmanipulationen und -verarbeitungsaufgaben, was es zu einer der besten Programmiersprachen für die Bereiche Data Science und Webentwicklung macht. Dank der nativen Wörterbuch- und Listendatentypen ist Python nach JavaScript die zweitbeste Sprache für die Bearbeitung von JSON-Dokumenten – und eignet sich hervorragend für die Arbeit mit BSON. PyMongo, die Standard-MongoDB-Treiberbibliothek für Python, ist einfach zu bedienen und bietet eine intuitive API für den Zugriff auf Datenbanken, Collections und Dokumente.

Objekte, die über PyMongo aus MongoDB abgerufen werden, sind mit Wörterbüchern und Listen kompatibel, sodass wir sie leicht manipulieren, iterieren und ausgeben können.

Wie MongoDB Daten speichert

MongoDB speichert Daten in JSON-ähnlichen Dokumenten:

Python-Wörterbücher haben folgenden Aufbau:

Lesen Sie einen Überblick zu den ersten Schritten und zur Entfesselung des Potenzials dieser leistungsfähigen Kombination.

Vorbereitungen

Laden Sie Python herunter und installieren Sie die Software auf dem Computer. Um zu verifizieren, ob die Installation in Ordnung ist, geben Sie python --version in das Befehlszeilenterminal ein. Das Resultat sollte Folgendem ähneln:

Sie können sich anhand der Python MongoDB-Beispiele in diesem Tutorial einarbeiten, auch wenn Sie Python noch nicht genutzt haben.

Wir empfehlen, einen kostenlosen MongoDB Atlas-Cluster mit Kontingent für dieses Tutorial einzurichten.
Kostenlosen Kontingent-Cluster jetzt starten
Erfahren Sie mehr über Atlas
Python und MongoDB Atlas verbinden

PyMongo verfügt über eine Reihe von Paketen für die Python-MongoDB-Interaktion. Beginnen Sie für das folgende Tutorial mit der Erstellung einer virtuellen Umgebung, und aktivieren Sie sie.

Da Sie sich nun in Ihrer virtuellen Umgebung befinden, können Sie PyMongo installieren. Geben Sie in Ihrem Terminal Folgendes ein:

Jetzt können wir PyMongo als Python MongoDB-Bibliothek in unserem Code mit einer Importanweisung verwenden.

Erstellen einer MongoDB-Datenbank in Python

Der erste Schritt zum Verbinden von Python mit Atlas besteht im Erstellen eines Clusters. Sie können die Anleitungen in der Dokumentation befolgen, um den Cluster zu erstellen und einzurichten.

Erstellen Sie dann eine Datei namens pymongo_get_database.py in einem beliebigen Ordner, in die der PyMongo-Code geschrieben werden kann. Sie können jeden einfachen Texteditor wie Visual Studio Code verwenden.

Erstellen Sie den MongoDB-Client, indem Sie Folgendes hinzufügen:

Zum Erstellen eines MongoClient benötigen Sie einen Verbindungsstring in der Datenbank. Wenn Sie Atlas verwenden, können Sie die Schritte in der Dokumentation befolgen, um den Verbindungsstring abzurufen. Verwenden Sie connection_string, um MongoClient zu erstellen und die MongoDB-Datenbankverbindung abzurufen. Ändern Sie den Benutzername, das Passwort und den Clusternamen.

In diesem Python MongoDB-Tutorial erstellen wir eine Einkaufsliste und fügen einige Produkte hinzu. Zu diesem Zweck haben wir die Datenbank user_shopping_list erstellt.

MongoDB erstellt die Datenbank erst, nachdem collections und Dokumente eingefügt wurden. Deshalb fahren wir mit dem Erstellen einer collection fort.

Erstellen einer collection in Python

Zum Erstellen einer collection übergeben Sie ihren Namen an die Datenbank. Fügen Sie den folgenden Code in eine neue Datei namens pymongo_test_insert.py ein.

Dadurch wird eine collection namens user_1_items in der Datenbank user_shopping_list erstellt.

Einfügen von Dokumenten in Python

Zum Einfügen vieler Dokumente gleichzeitig können Sie die pymongo-Methode insert_many() verwenden.

Nun fügen wir ein drittes Dokument ein, ohne das Feld _id anzugeben. Dieses Mal fügen wir ein Feld des Datentyps „date“ hinzu. Verwenden Sie zum Hinzufügen des Datums mit PyMongo das Python-Paket dateutil.

Installieren Sie zunächst das Paket mit folgendem Befehl:

Fügen Sie Folgendes in pymongo_test_insert.py ein:

Wir verwenden die Methode insert_one(), um ein einzelnes Dokument einzufügen.

Öffnen Sie die Befehlszeile und navigieren Sie zu dem Ordner, in dem pymongo_test_insert.py gespeichert wurde.

Führen Sie die Datei mit folgendem Befehl aus:

Nun stellen wir die Verbindung zur MongoDB Atlas-Benutzeroberfläche her und überprüfen das bisher Erreichte.

Melden Sie sich beim Atlas-Cluster an und klicken Sie auf die collections-Schaltfläche.

Auf der linken Seite werden der Name der soeben erstellten Datenbank und der collection angezeigt. Wenn Sie auf den Namen der collection klicken, können Sie auch die Daten anzeigen:

Anzeigen von Datenbankname und collection-Name
Anzeigen der Daten auf einen Klick

Das Feld _id ist standardmäßig vom ObjectId-Typ. Wenn wir das Feld _id nicht angeben, wird es von MongoDB trotzdem generiert. Nicht alle in einem Dokument vorhandenen Felder müssen auch in anderen Dokumenten enthalten sein. MongoDB hindert Sie aber nicht daran, Daten einzugeben – das ist das Prinzip einer schemalosen Datenbank.

Wenn wir item_3 erneut eingeben, fügt MongoDB ein neues Dokument mit einem neuen _id-Wert ein. Die beiden ersten Einfügungen lösen aber aufgrund des Felds _id, der eindeutigen Kennung, einen Fehler aus.

Abfragen in Python

Wir wollen nun mit find() gleichzeitig alle Dokumente anzeigen lassen. Zu diesem Zweck erstellen wir die separate Datei pymongo_test_query.py:

Öffnen Sie die Befehlszeile und navigieren Sie zu dem Ordner, in dem Sie pymongo_test_query.py gespeichert haben. Führen Sie die Datei mit folgendem Befehl aus:

Als Ausgabe erhalten wir die Liste der Wörterbuchobjekte:

Wörterbuchliste

Wir können die Daten anzeigen, das Format ist aber unübersichtlich. Deshalb geben wir die Objektnamen und deren jeweilige Kategorie aus, indem wir die Zeile print durch Folgendes ersetzen:

Obwohl MongoDB die gesamten Daten erhält, wird für das dritte Dokument ein Python-„KeyError“ ausgegeben.

Python KeyError

Verwenden Sie pandas.DataFrames zur Handhabung von Fehlern wegen fehlender Daten in Python. DataFrames sind 2D-Datenstrukturen, die für Datenverarbeitungsaufgaben verwendet werden. Die Pymongo-Methode find() gibt Wörterbuchobjekte zurück, die in einer einzelnen Codezeile in einen DataFrame konvertiert werden können.

Installieren Sie die pandas-Bibliothek:

Importieren Sie jetzt die pandas-Bibliothek, indem Sie die folgende Zeile am Anfang der Datei einfügen:

Und ersetzen Sie den Code in der Schleife durch folgenden Code zur Handhabung des KeyError-Fehlers in einem Schritt:

Die Fehler für die fehlenden Werte werden durch NaN und NaT ersetzt.

NaN und NaT für die fehlenden Werte.
Indizierung in Python MongoDB

Die Anzahl der Dokumente und collections nimmt in einer echten Datenbank ständig zu. Die Suche nach bestimmten Dokumenten kann in einer sehr großen collection viel Zeit in Anspruch nehmen. Dies gilt insbesondere, wenn es sich um Mehrzweckdokumente handelt. Indexe beschleunigen Suchoperationen in Datenbanken und machen sie effizienter. Das reduziert die Kosten der Abfrage bei Operationen wie Sortieren, Zählen und Abgleichen.

MongoDB definiert Indexe auf der Ebene der collections.

Sinnvoll wird der Index, wenn Sie der collection weitere Dokumente hinzufügen. Mit der Methode insert_many() können Sie gleichzeitig mehrere Dokumente hinzufügen. Für Beispieldokumente können Sie den Code aus github kopieren und python pymongo_test_insert_more_items.py im Terminal ausführen.

Beispiel: Wir benötigen Produkte, die zur Kategorie „food“ gehören:

Bei Ausführung der obigen Anfrage muss MongoDB alle Dokumente scannen. Zum Verifizieren müssen Sie Compass herunterladen. Stellen Sie die Verbindung zum Cluster mit dem Verbindungsstring her. Öffnen Sie die collection und navigieren Sie zur Registerkarte „Plan erläutern“. Geben Sie unter „filter“ die oben beschriebenen Kriterien ein und sehen Sie sich die Ergebnisse an:

Abfrageergebnisse ohne Indexe

Beachten Sie, dass die Abfrage vierzehn Dokumente scannt und fünf Treffer erzielt.

Wir erstellen einen Index für das Feld „category“. In einer neuen Datei namens pymongo_index.py fügen Sie folgenden Code hinzu.

Beschreiben Sie den Filter erneut für die Compass-Benutzeroberfläche:

Abfrageergebnisse mit Index

Diesmal werden aufgrund des Kategorieindex nur fünf Dokumente gescannt. Aufgrund der geringen Anzahl an Dokumenten ist hier kein signifikanter Unterschied der Ausführungszeit zu beobachten. Deutlich wird aber, dass viel weniger Dokumente für die Abfrage gescannt werden. Indexe unterstützen zudem die Optimierung der Ausführungsgeschwindigkeit für Aggregationen. Aggregationen sind nicht Bestandteil dieses Tutorials. Einen Überblick finden Sie hier.

Zusammenfassung

In diesem Python MongoDB-Tutorial wurden die Grundlagen von PyMongo vermittelt und einfache Datenbankoperationen ausgeführt. Befassen Sie sich nun mit dem Verwenden von PyMongo zum Ausführen von CRUD-Operationen unter Verwendung von Geschäftsdaten. Wenn Sie dieses Tutorial nicht durchgearbeitet haben, beginnen Sie nun mit dem kostenlosen Installieren von MongoDB Atlas. Zudem ist ein Kurs zu diesem Thema in der MongoDB University verfügbar.

Sind Sie bereit, einzusteigen?

Starten Sie einen neuen Cluster oder migrieren Sie ohne Ausfallzeiten zu MongoDB Atlas und stellen Sie noch heute eine Verbindung zu Python her.
Jetzt testen

FAQ