Python-Datenpersistenz - PyMongo-Modul

MongoDB ist dokumentenorientiert NoSQLDatenbank. Es handelt sich um eine plattformübergreifende Datenbank, die unter einer serverseitigen öffentlichen Lizenz vertrieben wird. Es verwendet JSON-ähnliche Dokumente als Schema.

Um die Speicherung großer Datenmengen zu ermöglichen, sind mehrere physische Server (Shards genannt) miteinander verbunden, sodass eine horizontale Skalierbarkeit erreicht wird. Die MongoDB-Datenbank besteht aus Dokumenten.

Ein Dokument ist analog zu einer Zeile in einer Tabelle einer relationalen Datenbank. Es gibt jedoch kein bestimmtes Schema. Dokument ist eine Sammlung von Schlüssel-Wert-Paaren - ähnlich wie Wörterbuch. Die Anzahl der kv-Paare in jedem Dokument kann jedoch variieren. So wie eine Tabelle in der relationalen Datenbank einen Primärschlüssel hat, hat das Dokument in der MongoDB-Datenbank einen speziellen Schlüssel namens"_id".

Bevor wir sehen, wie die MongoDB-Datenbank mit Python verwendet wird, wollen wir kurz verstehen, wie MongoDB installiert und gestartet wird. Community- und kommerzielle Version von MongoDB ist verfügbar. Die Community-Version kann unter www.mongodb.com/download-center/community heruntergeladen werden .

Angenommen, MongoDB ist in c: \ mongodb installiert, kann der Server mit dem folgenden Befehl aufgerufen werden.

c:\mongodb\bin>mongod

Der MongoDB-Server ist standardmäßig unter Portnummer 22017 aktiv. Datenbanken werden standardmäßig im Ordner data / bin gespeichert, obwohl der Speicherort mit der Option –dbpath geändert werden kann.

MongoDB verfügt über einen eigenen Befehlssatz, der in einer MongoDB-Shell verwendet werden kann. Verwenden Sie zum Aufrufen der ShellMongo Befehl.

x:\mongodb\bin>mongo

Es wird eine Shell-Eingabeaufforderung ähnlich der MySQL- oder SQLite-Shell-Eingabeaufforderung angezeigt, vor der native NoSQL-Befehle ausgeführt werden können. Wir sind jedoch daran interessiert, die MongoDB-Datenbank mit Python zu verbinden.

PyMongoDas Modul wurde von MongoDB Inc selbst entwickelt, um eine Python-Programmierschnittstelle bereitzustellen. Verwenden Sie das bekannte Pip-Dienstprogramm, um PyMongo zu installieren.

pip3 install pymongo

Angenommen, der MongoDB-Server ist betriebsbereit (mit mongod Befehl) und lauscht an Port 22017, müssen wir zuerst a deklarieren MongoClientObjekt. Es steuert alle Transaktionen zwischen der Python-Sitzung und der Datenbank.

from pymongo import MongoClient
client=MongoClient()

Verwenden Sie dieses Clientobjekt, um eine Verbindung mit dem MongoDB-Server herzustellen.

client = MongoClient('localhost', 27017)

Mit dem folgenden Befehl wird eine neue Datenbank erstellt.

db=client.newdb

Die MongoDB-Datenbank kann viele Sammlungen enthalten, ähnlich wie Tabellen in einer relationalen Datenbank. Ein Sammlungsobjekt wird erstellt vonCreate_collection() Funktion.

db.create_collection('students')

Jetzt können wir ein oder mehrere Dokumente wie folgt zur Sammlung hinzufügen:

from pymongo import MongoClient
client=MongoClient()
db=client.newdb
db.create_collection("students")
student=db['students']
studentlist=[{'studentID':1,'Name':'Juhi','age':20, 'marks'=100},
{'studentID':2,'Name':'dilip','age':20, 'marks'=110},
{'studentID':3,'Name':'jeevan','age':24, 'marks'=145}]
student.insert_many(studentlist)
client.close()

Um die Dokumente abzurufen (ähnlich wie bei der SELECT-Abfrage), sollten wir verwenden find()Methode. Es gibt einen Cursor zurück, mit dessen Hilfe alle Dokumente abgerufen werden können.

students=db['students']
docs=students.find()
for doc in docs:
   print (doc['Name'], doc['age'], doc['marks'] )

Um ein bestimmtes Dokument anstelle aller Dokumente in einer Sammlung zu finden, müssen Sie die Methode filter to find () anwenden. Der Filter verwendet logische Operatoren. MongoDB hat seine eigenen logischen Operatoren wie folgt:

Sr.Nr. MongoDB-Operator & traditioneller logischer Operator
1

$eq

gleich (==)

2

$gt

größer als (>)

3

$gte

größer oder gleich (> =)

4

$in

wenn gleich einem Wert im Array

5

$lt

weniger als (<)

6

$lte

kleiner oder gleich (<=)

7

$ne

ungleich (! =)

8

$nin

wenn nicht gleich einem Wert im Array

Zum Beispiel sind wir daran interessiert, eine Liste von Studenten zu erhalten, die älter als 21 Jahre sind. Verwenden des Operators $ gt im Filter fürfind() Methode wie folgt -

students=db['students']
docs=students.find({'age':{'$gt':21}})
for doc in docs:
   print (doc.get('Name'), doc.get('age'), doc.get('marks'))

PyMongo-Modul bietet update_one() und update_many() Methoden zum Ändern eines Dokuments oder mehrerer Dokumente, die einen bestimmten Filterausdruck erfüllen.

Aktualisieren wir das Markenattribut eines Dokuments, dessen Name Juhi ist.

from pymongo import MongoClient
client=MongoClient()
db=client.newdb
doc=db.students.find_one({'Name': 'Juhi'})
db['students'].update_one({'Name': 'Juhi'},{"$set":{'marks':150}})
client.close()