Wenn Sie MongoDB mit Python nutzen möchten, ist PyMongo die beste Option. Die Standard-Treiber-Bi­blio­thek ist sehr be­nut­zer­freund­lich und über­sicht­lich. Die Er­stel­lung und Änderung eigener Da­ten­ban­ken und Coll­ec­tions ist in nur wenigen Schritten möglich.

Was steckt hinter PyMongo?

Das NoSQL-Da­ten­bank­ma­nage­ment­sys­tem MongoDB hat sich innerhalb der letzten Jahre zu einer echten Al­ter­na­ti­ve zu MySQL gemausert. Ein großer Vorteil: Dank passender Treiber können Sie die Pro­gram­mier­spra­che Ihrer Wahl nutzen, um Objekte dar­zu­stel­len. PyMongo ist das of­fi­zi­el­le Treiber-Paket, um MongoDB mit Python an­zu­steu­ern.

Hinweis

MongoDB speichert Daten als JSON-Dokumente, die zur besseren Un­ter­tei­lung in Samm­lun­gen (Coll­ec­tions) zu­sam­men­ge­fasst und indiziert werden. Über ver­schie­de­ne MongoDB Commands können Sie die Daten dann abrufen, sortieren, verändern, zu­sam­men­fas­sen oder löschen.

So in­stal­lie­ren Sie PyMongo

Wollen Sie die Treiber-Bi­blio­thek verwenden, um MongoDB mit Python zu nutzen, ist der Python-Pa­ket­ma­na­ger PIP zu empfehlen. Mit diesem können Sie PyMongo jederzeit auf dem Gerät bzw. Server in­stal­lie­ren, auf dem MongoDB aus­ge­führt wird. Das passende Kommando lautet wie folgt:

python -m pip install pymongo

So erstellen Sie Da­ten­ban­ken in MongoDB mit Python

Nach der In­stal­la­ti­on von PyMongo verbinden Sie sich mit MongoDB. Dafür nutzen Sie den Mon­go­Cli­ent. Der passende Befehl sieht so aus (der Platz­hal­ter „<<MongoDB URL>>“ ist durch den je­wei­li­gen Con­nec­tion-String zu ersetzen):

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

Es gibt drei Standard-Da­ten­ban­ken in MongoDB: local, admin und config. Wollen Sie MongoDB al­ler­dings wirklich effektiv mit Python nutzen, werden Sie zu­sätz­li­che Da­ten­ban­ken benötigen. Diese erstellen Sie einfach durch das Kürzel „db“. Existiert die genannte Datenbank bereits, wird sie auf­ge­ru­fen. Gibt es noch keine Datenbank mit dem ent­spre­chen­den Namen, erstellt MongoDB diese für Sie. Der Befehl für eine neue Datenbank namens „kun­den­lis­te“ sieht fol­gen­der­ma­ßen aus:

db = client.kundenliste

Um Ihre Daten zu­sätz­lich zu schützen, können Sie an dieser Stelle ein Au­then­ti­fi­zie­rungs­ver­fah­ren ein­rich­ten. Die ent­spre­chen­den Daten sind stan­dard­mä­ßig in der Datenbank „admin“ hin­ter­legt. So fügen Sie eine Au­then­ti­fi­zie­rung ein:

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

Coll­ec­tions hin­zu­fü­gen mit PyMongo

Sobald Sie eine Datenbank erstellt haben, können Sie ganz einfach Coll­ec­tions hin­zu­fü­gen. Be­rück­sich­tigt werden diese vom System al­ler­dings erst, wenn sie auch tat­säch­lich Dokumente be­inhal­ten. Um eine neue Coll­ec­tion 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 We­sent­li­che kon­zen­trie­ren. Ob In­stal­la­ti­on, Betrieb oder War­tungs­ar­bei­ten, IONOS sorgt für einen zu­ver­läs­si­gen Betrieb Ihrer hoch­per­for­man­ten Da­ten­ban­ken.

MongoDB: Mit Python Da­ten­bank­ein­trä­ge einfügen

Diese neue Coll­ec­tion können Sie jetzt mit Inhalten befüllen. Neue Dateien werden dort hin­ter­legt und können bei Bedarf abgerufen, kom­bi­niert oder an­der­wei­tig 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 hin­zu­fü­gen. Jeder dieser Einträge bekommt dabei au­to­ma­tisch ein in­di­vi­du­el­les und ein­zig­ar­ti­ges „_id“-Feld, durch das er später auch einzeln aus­ge­wählt und verwendet werden kann. Einträge gebündelt hin­zu­zu­fü­gen, funk­tio­niert 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 ver­schie­de­ne Mög­lich­kei­ten – der wohl prak­tischs­te Weg führt über die Methode MongoDB Find. Für das Beispiel von oben könnten Sie diese fol­gen­der­ma­ß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 Kom­bi­na­ti­on von MongoDB und Python gewährt Ihnen ver­schie­de­ne Optionen, Einträge an­zu­pas­sen. Neben Än­de­run­gen an einem spe­zi­el­len Dokument können Sie An­pas­sun­gen an mehreren oder allen Einträgen in einer Datenbank oder einer spe­zi­el­len Coll­ec­tion vornehmen. Passende Methoden sind u. a. „update_one“ und „update_many“.

Beispiel für „update_one“

Zur Ver­an­schau­li­chung der „update_one“-Methode eignet sich eine einfache Adress­än­de­rung. Nehmen wir daher an, dass die Kundin „Mus­ter­mann“ 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 be­stimm­ten Kriterium ent­spre­chen, nutzen Sie den Befehl „update_many“. Im folgenden Beispiel wird allen Kundinnen und Kunden, deren Name mit „M“ beginnt, eine neue Stadt zu­ge­wie­sen:

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 Funk­ti­ons­wei­se ähnelt den Methoden zur Änderung eines Eintrags oder mehrerer Dokumente: Sie geben an, ob alle Dokumente, die be­stimm­ten Kriterien ent­spre­chen, gelöscht werden sollen oder nur ein be­stimm­tes. Die ent­spre­chen­den 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 „Goe­the­stra­ße 42“ entfernt. Die rest­li­chen Einträge bleiben unberührt.

Beispiel für die Löschung aller Einträge in einer Coll­ec­tion

Möchten Sie mehrere Einträge einer MongoDB-Coll­ec­tion löschen, funk­tio­niert dies fol­gen­der­ma­ß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_deutsch­land“ entfernt, während die Coll­ec­tion selbst intakt bleibt. So könnten Sie bei­spiels­wei­se andere Einträge neu hin­zu­fü­gen. Natürlich können Sie auch die gesamte Coll­ec­tion löschen.

Zum Hauptmenü