Kurs
Bereit, deinen MongoDB-Cluster mit deinem Python-Projekt zu verbinden? Perfekt. In diesem Tutorial erfährst du, was PyMongo ist, warum es das Standardpaket für Python-Entwickler ist, die MongoDB als Datenbank einsetzen, und wie du deine erste Verbindung so effizient wie möglich zum Laufen bringst.
Wenn du gerade erst startest, schau dir unbedingt unseren Kurs Introduction to Using MongoDB for Data Science in Python an.
Was ist PyMongo?
Also, was genau ist das PyMongo-Python-Paket? Dieses Paket ist der offizielle Python-Treiber von MongoDB. Er ermöglicht es Entwicklern, mit ihren Python-Anwendungen eine Verbindung zu MongoDB-Datenbanken herzustellen, Abfragen auszuführen und zu interagieren.
Es ist der empfohlene Weg, um aus Python mit deinen MongoDB-Datenbanken zu arbeiten, und eignet sich hervorragend für den Bau verschiedenster Webanwendungen dank der guten Kompatibilität mit Flask und Django. So können Python-Entwickler das Potenzial von MongoDB in ihren Anwendungen voll ausschöpfen.
Schauen wir uns an, wie du mit PyMongo startest, indem wir eine kleine CRUD-User-App (Create, Read, Update, Delete) bauen – damit siehst du, wie schnell du mit minimalem Code loslegen kannst!
Voraussetzungen für den Erfolg
Damit du das Tutorial problemlos nachvollziehen kannst, solltest du Folgendes parat haben:
- Ein MongoDB Atlas-Konto
- Eine IDE deiner Wahl (dieses Tutorial nutzt ein Google Colab-Notebook)
- Python 3.6+
pipinstalliert (wenn du eine andere IDE als ein Google Colab-Notebook verwendest).
Einen MongoDB-Cluster einrichten
Bevor wir unsere MongoDB-Datenbank mit dem Python-Projekt verbinden, brauchen wir einen Cluster. Melde dich dazu in deinem MongoDB Atlas-Konto an und lege ein neues Projekt an, falls du noch keines hast.
Erstelle anschließend innerhalb des Projekts einen Cluster.

Jetzt kannst du deinen Cluster bereitstellen. Klicke auf die Stufe „Free“ (dauerhaft kostenlos!) und vergib einen Namen für deinen Cluster oder belasse den Standardnamen.
Beachte: Sobald du einen Namen für deinen Cluster wählst, kannst du ihn nicht mehr ändern. Wähle den Cloud-Anbieter (zur Auswahl stehen AWS, Google Cloud und Azure) und achte darauf, dass du die richtige Region verwendest.

Klicke auf den grünen Button „Create Deployment“, und wir können weitermachen.
Du wirst nun aufgefordert, einen „Username“ und ein „Password“ für deinen Cluster zu wählen. Nimm etwas Einprägsames (aber bitte nicht so einprägsam wie im Tutorial!), das zugleich sicher ist – du brauchst diese Daten jedes Mal, wenn du auf deine Connection String zugreifst.
Klicke außerdem auf „Preload sample dataset“, um es dir einfacher zu machen. Dadurch wird automatisch das Beispieldataset „sample_mflix“ geladen, mit dem wir arbeiten werden.
Klicke auf „Create Database User“, um fortzufahren.

Jetzt kannst du dich mit deinem Cluster verbinden. Es gibt viele Wege, aber weil dieses Tutorial PyMongo fokussiert, verbinden wir uns über die Drivers.

Wähle „Python“ und die gewünschte Version (wir wählen 4.7 oder neuer), dann siehst du deine Connection String. Dein Benutzername und Passwort werden zur einfachen Nutzung automatisch eingefügt.

Speichere deine Connection String jetzt sicher ab. Danach kannst du auf den grünen Button „Done“ klicken.
So sieht dein Cluster aus, wenn er konfiguriert ist.
![Cluster once configured]](https://media.datacamp.com/cms/ad_4nxf2qowpihkjm1stvlc-ddf-wiee5pc64vmyac6z-hvxdhkucer83idgex9z73erlpem2bm4vgfq6sfqb8d5opoibgpxvlzlyenuri_fcicaw_7_6lrqpk9_djmzyjowquwtdndjzg.png)
Wechsle nun links im Menü zu „Network Access“ und prüfe, ob deine IP-Adresse korrekt konfiguriert ist. Für dieses Tutorial (nicht für die Produktion empfohlen) kannst du zur Vereinfachung „Access from Anywhere“ wählen.
Hinweis für die Produktion: Für produktive Apps solltest du unter Network Access > IP Access List in Atlas nur spezifische IPs auf die Allowlist setzen.
Wechsel jetzt in deine IDE und arbeite mit den Daten los!
Verbinden und CRUD-Operationen mit PyMongo ausführen
Als Erstes installieren wir mit pip pymongo. Wir installieren in diesem Schritt auch getpass, damit unsere Verbindung sicher bleibt:
!pip install pymongo
Als Nächstes richten wir die Verbindung zu unserem Cluster ein. Wir verwenden MongoClient, um die Verbindung herzustellen.
import getpass
from pymongo import MongoClient
# Get connection string from user
connection_string = getpass.getpass(prompt="Enter connection string WITH USER + PASS here: ")
try:
client = MongoClient(connection_string)
client.admin.command("ping")
print("Successfully connected")
except Exception as e:
print("Connection failed:", e)
Wechsle zurück zu deinem Cluster, um den Namen von Datenbank und Collection nachzusehen. Der Datenbankname lautet sample_mflix, die Collection heißt users.
Hier ein Beispiel für die Daten in unserem Beispiel-Cluster. Wir haben die ObjectId jedes Dokuments sowie Name, E-Mail und Passwort jedes Users.

Lass uns einen schnellen Test ausführen, um sicherzustellen, dass wir die Dokumente aus unserem Skript lesen können:
database = client["sample_mflix"]
collection = database["users"]
for document in collection.find().limit(20):
print(document)
Wenn das erfolgreich läuft, siehst du Folgendes:

Hinweis: Das sample_mflix-Dataset enthält Klartext-Passwörter zu Demonstrationszwecken. In echten Anwendungen Passwörter immer hashen (z. B. mit bcrypt oder Argon2) und keine Zugangsdaten hardcoden.
Damit haben wir auch das Lesen der Informationen im Cluster gezeigt! Jetzt legen wir einen neuen User an.
new_user = {
"name": "Anaiya Raisinghani",
"email": "fakeanaiya@gmail.com",
"password": "pleasedonothackme"
}
# insert the document
result = collection.insert_one(new_user)
print(result.inserted_id)
Wir sehen die neue User-ID, und wenn ich zurück in meinen Cluster gehe, kann ich nach dieser ID suchen und prüfen, ob mein neues User-Dokument auftaucht:

Jetzt aktualisieren wir das soeben angelegte Dokument.
Hinweis: BSON wird mit PyMongo installiert – keine zusätzliche Installation nötig. ObjectId ist das Standardformat für eindeutige IDs in MongoDB.
from bson import ObjectId
collection.update_one(
{"_id": result.inserted_id}, # using the same document that we inserted above
{"$set": {"password": "help!ivebeenhacked!!"}}
)

Wie zu sehen ist, wurde das Passwort aktualisiert, und die Änderung ist in der MongoDB Atlas-UI sichtbar.
Jetzt löschen wir dieses Dokument.
delete_user = collection.delete_one({"_id": result.inserted_id})
print("Deleted users:", delete_user.deleted_count)
Die gelöschten Nutzer werden „1“ sein. Prüfen wir zur Sicherheit noch einmal in der MongoDB Atlas-UI.

Wir haben das Dokument erfolgreich gelöscht!
Fazit
In diesem Tutorial hast du deine ersten 10 Minuten mit PyMongo – dem offiziellen Python-Treiber von MongoDB – erfolgreich absolviert. Wir haben Dokumente aus unserer Collection gelesen, einen neuen User angelegt, ihn aktualisiert und anschließend wieder gelöscht!
Weitere Informationen zu PyMongo findest du im Kurs Introduction to Using MongoDB for Data Science in Python und in der offiziellen Dokumentation.
FAQs
What are some common errors when connecting PyMongo to MongoDB?
Typische Probleme sind falsche Connection Strings, Firewall-Beschränkungen (IP-Whitelist) oder Authentifizierungsfehler. Prüfe bei Verbindungsfehlern sorgfältig deine Zugangsdaten und Netzwerkeinstellungen.
Does PyMongo support asynchronous programming?
PyMongo unterstützt asynchrone Operationen nicht nativ. Wenn du Async-Funktionen brauchst, nutze Motor, den offiziellen asynchronen Python-Treiber für MongoDB.
Can PyMongo handle database transactions?
Ja, PyMongo unterstützt ACID-Transaktionen über mehrere Dokumente, sofern du MongoDB-Replica-Sets oder Sharded-Cluster verwendest. Auf Standalone-Deployments sind Transaktionen nicht verfügbar.
How do I handle PyMongo connection pooling?
PyMongo verwaltet Connection-Pooling automatisch im Hintergrund. Bei Bedarf kannst du Parameter wie Poolgröße und Timeout über die MongoClient-Einstellungen konfigurieren.
Can I use PyMongo with Pandas for data analysis tasks?
Auf jeden Fall! Du kannst Daten mit PyMongo aus MongoDB abrufen und direkt in Pandas DataFrames laden, um sie zu analysieren und zu verarbeiten.

