PyMongo: MongoDB mit Python verwenden

Wenn Sie MongoDB mit Python nutzen möchten, ist PyMongo die beste Option. Die Standard-Treiber-Bibliothek ist sehr benutzerfreundlich und übersichtlich. Die Erstellung und Änderung eigener Datenbanken und Collections ist in nur wenigen Schritten möglich.

Was steckt hinter PyMongo?

Das NoSQL-Datenbankmanagementsystem MongoDB hat sich innerhalb der letzten Jahre zu einer echten Alternative zu MySQL gemausert. Ein großer Vorteil: Dank passender Treiber können Sie die Programmiersprache Ihrer Wahl nutzen, um Objekte darzustellen. PyMongo ist das offizielle Treiber-Paket, um MongoDB mit Python anzusteuern.

Hinweis

MongoDB speichert Daten als JSON-Dokumente, die zur besseren Unterteilung in Sammlungen (Collections) zusammengefasst und indiziert werden. Über verschiedene MongoDB Commands können Sie die Daten dann abrufen, sortieren, verändern, zusammenfassen oder löschen.

So installieren Sie PyMongo

Wollen Sie die Treiber-Bibliothek verwenden, um MongoDB mit Python zu nutzen, ist der Python-Paketmanager PIP zu empfehlen. Mit diesem können Sie PyMongo jederzeit auf dem Gerät bzw. Server installieren, auf dem MongoDB ausgeführt wird. Das passende Kommando lautet wie folgt:

python -m pip install pymongo

So erstellen Sie Datenbanken in MongoDB mit Python

Nach der Installation von PyMongo verbinden Sie sich mit MongoDB. Dafür nutzen Sie den MongoClient. Der passende Befehl sieht so aus (der Platzhalter „<<MongoDB URL>>“ ist durch den jeweiligen Connection-String zu ersetzen):

from pymongo import MongoClient
datenbank = MongoClient ('<<mongodb url="">>')</mongodb>

Es gibt drei Standard-Datenbanken in MongoDB: local, admin und config. Wollen Sie MongoDB allerdings wirklich effektiv mit Python nutzen, werden Sie zusätzliche Datenbanken benötigen. Diese erstellen Sie einfach durch das Kürzel „db“. Existiert die genannte Datenbank bereits, wird sie aufgerufen. Gibt es noch keine Datenbank mit dem entsprechenden Namen, erstellt MongoDB diese für Sie. Der Befehl für eine neue Datenbank namens „kundenliste“ sieht folgendermaßen aus:

db = client.kundenliste

Um Ihre Daten zusätzlich zu schützen, können Sie an dieser Stelle ein Authentifizierungsverfahren einrichten. Die entsprechenden Daten sind standardmäßig in der Datenbank „admin“ hinterlegt. So fügen Sie eine Authentifizierung ein:

connection = MongoClient ("localhost",
username = "user",
password = "password",
authSource = "admin",
authMechanism = "SCRAM-SHA-256")

Collections hinzufügen mit PyMongo

Sobald Sie eine Datenbank erstellt haben, können Sie ganz einfach Collections hinzufügen. Berücksichtigt werden diese vom System allerdings erst, wenn sie auch tatsächlich Dokumente beinhalten. Um eine neue Collection in MongoDB mit Python zu erstellen, nutzen Sie folgende Eingabe:

collection = datenbank ["kunden_deutschland"]
Tipp: Managed MongoDB von IONOS

Mit Managed MongoDB von IONOS können Sie sich auf das Wesentliche konzentrieren. Ob Installation, Betrieb oder Wartungsarbeiten, IONOS sorgt für einen zuverlässigen Betrieb Ihrer hochperformanten Datenbanken.

MongoDB: Mit Python Datenbankeinträge einfügen

Diese neue Collection können Sie jetzt mit Inhalten befüllen. Neue Dateien werden dort hinterlegt und können bei Bedarf abgerufen, kombiniert oder anderweitig verändert werden. Ein Beispiel für ein Dokument sieht so aus:

kundenInfo = {
"name" : "Mustermann",
"anschrift" : "Beispielweg 10",
"plz" : "20097",
"stadt" : "Hamburg"
}
collection.insert_one(kundenInfo)

Mit der Methode „insert_many“ können Sie Einträge auch gesammelt hinzufügen. Jeder dieser Einträge bekommt dabei automatisch ein individuelles und einzigartiges „_id“-Feld, durch das er später auch einzeln ausgewählt und verwendet werden kann. Einträge gebündelt hinzuzufügen, funktioniert so:

kundenInfo = [
{
"name" : "Mustermann",
"anschrift" : "Beispielweg 10",
"plz" : "20097",
"stadt" : "Hamburg"
}
{
"name" : "Schulz",
"anschrift" : "Breite Allee 1",
"plz" : "10315",
"stadt" : "Berlin"
}
{
"name" : "Müller",
"anschrift" : "Goethestraße 42",
"plz" : "44866",
"stadt" : "Bochum"
}
]
collection.insert_many(kundenInfo)

MongoDB-Daten mit Python abrufen

Ebenso wichtig wie das Speichern der Daten ist, dass Sie diese später auch ohne Probleme abrufen können. Hierfür gibt es verschiedene Möglichkeiten – der wohl praktischste Weg führt über die Methode MongoDB Find. Für das Beispiel von oben könnten Sie diese folgendermaßen anwenden:

daten = collection.find ( { "stadt" : "Hamburg" } )
print (daten)
# {
"_id" : ObjectID ("7fe4a462991acf79e22c" ),
"name" : "Mustermann", "anschrift" : "Beispielweg 10",
"plz" : "20097",
"stadt" : "Hamburg"
}

Einträge der MongoDB-Datenbank mit Python ändern

Natürlich sind Daten nicht statisch. Es kann daher nötig sein, Einträge zu ändern. Die Kombination von MongoDB und Python gewährt Ihnen verschiedene Optionen, Einträge anzupassen. Neben Änderungen an einem speziellen Dokument können Sie Anpassungen an mehreren oder allen Einträgen in einer Datenbank oder einer speziellen Collection vornehmen. Passende Methoden sind u. a. „update_one“ und „update_many“.

Beispiel für „update_one“

Zur Veranschaulichung der „update_one“-Methode eignet sich eine einfache Adressänderung. Nehmen wir daher an, dass die Kundin „Mustermann“ innerhalb von Hamburg umgezogen ist. Statt ihren Eintrag zu löschen und neu zu erstellen, können Sie ihn einfach wie folgt anpassen:

import pymongo
myclient = pymongo.MongoClient ("<mongodb url="">")</mongodb>
mydb = myclient [ "kundenliste" ]
mycol = mydb [ "kunden_deutschland" ]
myquery = { "anschrift" : "Beispielweg 10" }
newvalues = { "$set" : { "anschrift" : "Schillerstraße 82" } }
mycol.update_one (myquery, newvalues)
#print "customer" after the update:
for x in mycol.find ():
print (x)

Beispiel für „update_many“

Um alle Dokumente zu ändern, die einem bestimmten Kriterium entsprechen, nutzen Sie den Befehl „update_many“. Im folgenden Beispiel wird allen Kundinnen und Kunden, deren Name mit „M“ beginnt, eine neue Stadt zugewiesen:

import pymongo
myclient = pymongo.MongoClient ("<mongodb url="">")</mongodb>
mydb = myclient [ "kundenliste" ]
mycol = mydb [ "kunden_deutschland" ]
myquery = { "name" : "$regex" : "^M" }
newvalues = { "$set" : { "stadt" : "Stuttgart" } }
x = mycol.update_many (myquery, newvalues)
print (x.modified_count, "documents updated.")

MongoDB-Dokumente mit Python löschen

Natürlich haben Sie auch die Option, Dokumente zu löschen. Die Funktionsweise ähnelt den Methoden zur Änderung eines Eintrags oder mehrerer Dokumente: Sie geben an, ob alle Dokumente, die bestimmten Kriterien entsprechen, gelöscht werden sollen oder nur ein bestimmtes. Die entsprechenden Befehle lauten „delete_one“ und „delete_many“.

Beispiel für „delete_one“

Um ein MongoDB-Dokument mit Python zu löschen, nutzen Sie den folgenden Weg:

import pymongo
myclient = pymongo.MongoClient ("<mongodb url="">")</mongodb>
mydb = myclient [ "kundenliste" ]
mycol = mydb [ "kunden_deutschland" ]
myquery = { "anschrift" : "Goethestraße 42" }
mycol.delete_one (myquery)

In diesem Beispiel wird der Eintrag mit der Anschrift „Goethestraße 42“ entfernt. Die restlichen Einträge bleiben unberührt.

Beispiel für die Löschung aller Einträge in einer Collection

Möchten Sie mehrere Einträge einer MongoDB-Collection löschen, funktioniert dies folgendermaßen:

import pymongo
myclient = pymongo.MongoClient ("<mongodb url="">")</mongodb>
mydb = myclient [ "kundenliste" ]
mycol = mydb [ "kunden_deutschland" ]
x = mycol.delete_many ( { } )
print (x.deleted_count, "documents deleted.")

In diesem Beispiel werden sämtliche Einträge der Sammlung „kunden_deutschland“ entfernt, während die Collection selbst intakt bleibt. So könnten Sie beispielsweise andere Einträge neu hinzufügen. Natürlich können Sie auch die gesamte Collection löschen.