BLOGAnnounced at MongoDB.local NYC 2024: A recap of all announcements and updates — Learn more >

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

Wie können Sie MongoDB mit Python verbinden?

Es gibt drei Möglichkeiten, MongoDB mit Python zu verbinden:

  • PyMongo

    • Der native Treiber für die Verbindung von MongoDB und Python. PyMongo verfügt über alle Bibliotheken, um Datenbankoperationen aus Python-Code auszuführen. Da es sich bei PyMongo um einen Low-Level-Treiber handelt, ist er schnell und intuitiv und bietet eine bessere Kontrolle.

  • MongoEngine

    • MongoEngine ist eine Dokumentenobjekt-Abbildung. Wir können ein Schema definieren, das Anwendungsobjekte und Dokumentdaten abbildet.

  • Djongo

    • Wir verwenden Djongo für Python-Webanwendungen unter Nutzung des Django-Frameworks. Es konvertiert vorhandene SQL-Abfragen in MongoDB-Abfragedokumente.

Mehr über die Verwendung von MongoEngine und Djongo erfahren.

Welche Datenbank eignet sich am besten für Python?

Python ist mit verschiedenen Datenbanken kompatibel. Die Wahl hängt von Ihren Projektanforderungen ab. MongoDB ist aufgrund seines flexiblen Schemas und seiner engen Anlehnung an die nativen Python-Objekte eine hervorragende Wahl für Python-Anwendungen. Dies macht Python und MongoDB zur großartigen Option für Webentwicklungsarbeiten.

Weitere Informationen finden Sie unter NoSQL vs. SQL Databases. Es gibt auch einige native Python-Datenbanken, aber diese sind nicht so beliebt und verfügen nur über sehr begrenzte Funktionen.

Ist MongoDB für Python geeignet?

MongoDB speichert Daten in flexiblen und schemalosen, JSON-ähnlichen Dokumenten. Python verfügt über umfangreiche Bibliotheken, die JSON- und BSON-Datenformate direkt verarbeiten. Python lässt sich über Treiber wie PyMongo, MongoEngine usw. gut in MongoDB integrieren.

Dadurch eignet sich MongoDB gut für Python, da die Starrheit im Datenbankschema beseitigt wird.

Wie speichert Python Daten in MongoDB?

Python speichert Daten in MongoDB über Bibliotheken wie PyMongo und MongoEngine. Für Webanwendungen, die das Django-Framework nutzen, können wir Djongo verwenden.

  • PymonGo: PyMongo ist der native Python-Treiber für die MongoDB-Datenbank. Da es sich um einen Low-Level-Treiber handelt, ist er schneller und wird bevorzugt verwendet, um Python und MongoDB zu verbinden.
  • MongoEngine: Mit MongoEngine können wir ein Schema erstellen (ja, für eine schemalose Datenbank). MongoEngine folgt dem ODM-Ansatz zur Abbildung von Anwendungsklassen und Datenbankdokumenten.
  • Djongo: Djongo ist ein SQL-Transpiler. Sie können bestehende SQL-Projekte ohne große Änderungen am Code nach MongoDB migrieren.

Mehr über die Verwendung von MongoEngine und Djongo erfahren.

Wie verwendet man MongoDB mit Python?
Mit PyMongo können wir MongoDB mit Python verbinden. Pymongo ist der native Python-Treiber für MongoDB. Die Syntax ist der von MongoShell ähnlich, sodass wir leicht die richtige Methode zuordnen und verwenden können. Beispielsweise entspricht insertMany() in MongoShell insert_many() in PyMongo. Wir können Python und MongoDB auch über MongoEngine und Djongo verbinden. Der bevorzugte Ansatz ist jedoch die Verwendung von PyMongo, da es sich um einen Low-Level-Treiber handelt, der schneller ist und mehr Kontrolle bietet. Weitere Informationen zu PyMongo finden Sie in unserer Dokumentation zu PyMongo.
Wie erhält man mithilfe von Python Daten von MongoDB?

Die effizienteste und einfachste Art, in Python eine Verbindung zu MongoDB herzustellen, ist die Verwendung von PyMongo. PyMongo ist der native Python-Treiber für MongoDB. Um eine Verbindung herzustellen, verwenden wir den Befehl pymongo.MongoClient() und als Argument connection_string. Anschließend können wir die Methode find() verwenden, um die erforderlichen Dokumente abzurufen. Beispiel:

PyMongo importieren

# sich mithilfe von PyMongo aus Python mit MongoDB verbinden
client = PyMongo.MongoClient(CONNECTION_STRING)
# Öffnen der Datenbank
dbname = client['user_shopping_list']
# Collection abrufen
collection_name = dbname["item_details"]
# Abrufen der Daten aus der Collection
item_details = collection_name.find()import PyMongo 

# sich mithilfe von PyMongo aus Python mit MongoDB verbinden 
 client = PyMongo.MongoClient(CONNECTION_STRING) 
# Öffnen der Datenbank 
 dbname = client['user_shopping_list'] 
# Collection abrufen 
 collection_name = dbname["item_details"] 
# die Daten aus der Collection abrufen 
 item_details = collection_name.find()
Wie fügt man mit Python Daten in MongoDB ein?

Um Daten einzufügen, verbinden Sie MongoDB und Python mithilfe von PyMongo. PyMongo ist der native Python-Treiber für MongoDB. Sobald wir eine Verbindung hergestellt haben, können wir PyMongo-Methoden wie „insertone()“ und „insertmany()“ verwenden. Beispiel:

# mongoclient abrufen 
 client = pyMongo.MongoClient(CONNECTION_STRING) 

# Datenbank abrufen/erstellen 
 dbname = client['user_shopping_list'] 

# Collection abrufen/erstellen 
 collection_name = dbname["item_details" ] 

# Das Dokument erstellen 
 item_1 = {"item_name": "Bread",...,"category" : "food",
"quantity" : 2}

# Eine Zeile einfügen 
 collection_name.insert_one(item_1)# Mongoclient abrufen
client = pyMongo.MongoClient (CONNECTION_STRING)

# Datenbank abrufen/erstellen
dbname = client ['user_shopping_list']

# Collection abrufen/erstellen
collection_name = dbname [" item_details "]

# Das Dokument erstellen
item_1 = {"item_name": "Bread",...,"category" : "food",
"quantity" : 2}

# Eine Zeile einfügen
collection_name.insert_one (item_1)
Wie kann man in MongoDB mithilfe von Python eine Datenbank erstellen?

Wir verwenden PyMongo, um eine MongoDB-Datenbank mithilfe von Python-Code zu erstellen. Beispiel:

 pyMongo importieren 

 # Mongoclient abrufen 
 client = pymongo.MongoClient(CONNECTION_STRING) 

 # Datenbank abrufen/erstellen 
 dbname = client['user_shopping_list']pyMongo importieren 

 # Mongoclient abrufen 
 client = pymongo .MongoClient(CONNECTION_STRING) 

 # Datenbank abrufen/erstellen 
 dbname = client['user_shopping_list']
Unterschied zwischen SQL-Datenbanken und NoSQL-Datenbanken

SQL werden auch als relationale Datenbanken bezeichnet, während NoSQL-Datenbanken („non SQL“ oder „nicht nur SQL“) sogenannte nicht-relationale Datenbanken sind. Relationale Datenbanken werden als relational bezeichnet, weil sie auf dem „relationalen Datenmodell“ aus der Mathematik beruhen.

SQL-Datenbanken speichern Daten in Form von Tabellen mit festen Zeilen und Spalten. NoSQL-Datenbanken gibt es in vielen Arten, zum Beispiel:

  1. Dokumententyp: JSON-Dokumente

  2. Schlüsselwert: Schlüssel-Wert-Paare

  3. Breitspaltig: Der Datenspeicher mit breiten Spalten verfügt über Tabellen mit Zeilen und dynamischen Spalten

Beispiel: Zu den SQL-basierten Datenbanken zählen MySQL, Microsoft SQL Server, PostgreSQL und SQLite. Beispiele für NoSQL-Datenbanken sind: MongoDB, CouchDB, Redis, DynamoDB usw.

Mehr Einzelheiten zu den Unterschieden finden Sie auf SQL vs NoSQL.