Stellen Sie mithilfe von Python eine lokale Verbindung zu einer MongoDB-Datenbank her

Tahseen Tauseef 10 Oktober 2023
  1. Speichern Sie Daten in MongoDB
  2. Stellen Sie mithilfe von Python eine lokale Verbindung zu einer MongoDB-Datenbank her
  3. Erstellen Sie eine Sammlung in Python
  4. Dokumente in Python einfügen
  5. Abfrage in Python
  6. Index in Python und MongoDB
Stellen Sie mithilfe von Python eine lokale Verbindung zu einer MongoDB-Datenbank her

Python ist die am weitesten verbreitete Programmiersprache für die Datenwissenschaft, und MongoDB ist mit seinem flexiblen und dynamischen Schema eine hervorragende Kombination zum Erstellen moderner Webanwendungen, JSON-APIs und Datenprozessoren, um nur einige Beispiele zu nennen.

MongoDB enthält auch einen nativen Python-Treiber und ein Team von Ingenieuren, die sich dafür einsetzen, dass MongoDB und Python nahtlos zusammenarbeiten.

Python bietet umfassende Unterstützung für gängige Datenmanipulations- und -verarbeitungsvorgänge. Pythons native Wörterbuch- und Listendatenstrukturen stellen es zum Beispiel bei der Verarbeitung von JSON-Dokumenten an zweiter Stelle hinter JavaScript, was es ideal für die Arbeit mit BSON macht.

PyMongo, die offizielle Python-MongoDB-Treiberbibliothek, ist ähnlich einfach und bietet eine intuitive API für den Zugriff auf Datenbanken, Sammlungen und Dokumente.

Objekte, die mit PyMongo aus MongoDB abgerufen werden, sind mit Wörterbüchern und Listen kompatibel und ermöglichen eine einfache Bearbeitung, Iteration und das Drucken.

Speichern Sie Daten in MongoDB

MongoDB speichert Daten in JSON-ähnlichen Dokumenten:

# Mongodb document (JSON-style)
document_1 = {
    "_id": "BF00001CFOOD",
    "item_name": "Bread",
    "quantity": 2,
    "ingredients": "all-purpose flour",
}

Python-Wörterbücher sehen so aus:

# python dictionary
dict_1 = {
    "item_name": "blender",
    "max_discount": "10%",
    "batch_number": "RR450020FRG",
    "price": 440,
}

Voraussetzungen und Installation von Python

Laden Sie Python herunter und installieren Sie es auf Ihrem Computer. Geben Sie python in Ihr Befehlszeilenfenster ein, um zu bestätigen, ob Ihre Installation richtig ist.

Sie sollten Folgendes erhalten:

Python 3.9.1 (tags/v3.9.1:9cf6752, Feb  5 2021, 10:34:40) [MSC v.1927 64 bit (AMD64)] on win32
>>>

Sie können den Python-MongoDB-Beispielen in dieser Lektion folgen, wenn Sie mit Python noch nicht vertraut sind.

Stellen Sie mithilfe von Python eine lokale Verbindung zu einer MongoDB-Datenbank her

PyMongo bietet eine Reihe von Bibliotheken für die Arbeit mit MongoDB in Python. Um PyMongo zum Laufen zu bringen, öffnen Sie die Eingabeaufforderung und geben Sie Folgendes ein:

python -m pip install pymongo

Für dieses Python-MongoDB-Tutorial verwenden Sie den MongoDB-SRV-URI. Installieren wir also dnspython:

python -m pip install dnspython

Jetzt können Sie PyMongo als Python-MongoDB-Bibliothek in unserem Code mit einer import-Anweisung verwenden. Aber zuerst erstellen wir eine MongoDB-Datenbank in Python.

Der erste Schritt zum Verbinden von Python ist also die Einrichtung des MongoDB-Clusters.

Als nächstes schreiben Sie den PyMongo-Code in eine pymongo test insert.py-Datei in einem beliebigen Unterverzeichnis. Jeder einfache Texteditor, wie z. B. Textpad/Notepad, reicht aus.

Fügen Sie dem MongoDB-Client die folgenden Zeilen hinzu:

def get_database():
    from pymongo import MongoClient
    import pymongo

    # Provide the mongodb url to connect python to mongodb using pymongo
    CONNECTION_STRING = (
        "mongodb+srv://<username>:<password>@<cluster-name>.mongodb.net/myFirstDatabase"
    )

    # Create a connection using MongoClient. You can import MongoClient or use pymongo.MongoClient
    from pymongo import MongoClient

    client = MongoClient(CONNECTION_STRING)

    # Create the database for your example
    return client["user_shopping_list"]

    # This is added so that files can reuse the function get_database()
    if __name__ == "__main__":
        # Get database
        dbname = get_database()

Um die MongoDB-Datenbankverbindung zu erhalten, verwenden Sie den CONNECTION_STRING, um den Mongo-Client zu erstellen. Ändern Sie zuerst den Clusternamen, den Benutzernamen und das Kennwort.

In dieser Python MongoDB-Lektion erstellen Sie eine Einkaufsliste und fügen einige Produkte hinzu. Sie haben dafür eine Datenbank namens Benutzer-Einkaufsliste erstellt.

Andererseits richtet MongoDB keine Datenbank ein, bis Sie ihr Sammlungen und Dokumente hinzugefügt haben. Als nächstes machen wir eine Sammlung.

Erstellen Sie eine Sammlung in Python

Übergeben Sie zum Erstellen einer Sammlung den Sammlungsnamen an die Datenbank. Achten Sie beim Kopieren des Codes in Ihre .py-Datei auf die richtige Einrückung.

collection_name = dbname["user_1_items"]

Dadurch wird eine Sammlung mit dem Namen user_1_items in der Datenbank user_shopping_list erstellt.

Dokumente in Python einfügen

Verwenden Sie die PyMongo-Methode insert_many(), um viele Dokumente auf einmal einzufügen.

item1 = {
    "_id": "U1IT00001",
    "item_name": "Blender",
    "max_discount": "10%",
    "batch_number": "RR450020FRG",
    "price": 440,
    "category": "kitchen appliance",
}

item2 = {
    "_id": "U1IT00002",
    "item_name": "Egg",
    "category": "food",
    "quantity": 12,
    "price": 50,
    "item_description": "brown country eggs",
}
collection_name.insert_many([item1, item2])

Fügen Sie das dritte Dokument ein, ohne das Feld _id zu erwähnen. Dieses Mal fügen Sie ein Datumsdatentypfeld ein.

Verwenden Sie das Python-Modul dateutil, um ein Datum in PyMongo hinzuzufügen. Da ISODate eine Mongo-Shell-Funktion ist, funktioniert es nicht mit Python.

python -m pip install python-dateutil ist der Befehl zum Installieren des Pakets. Fügen Sie dann in pymongo test.py Folgendes hinzu:

from dateutil import parser

expiry_date = "2021-07-13T00:00:00.000Z"
expiry = parser.parse(expiry_date)
item3 = {
    "item_name": "Bread",
    "quantity": 2,
    "ingredients": "all-purpose flour",
    "expiry_date": expiry,
}
collection_name.insert_one(item3)

Um ein einzelnes Dokument einzufügen, wurde die Methode insert one() verwendet.

Navigieren Sie zunächst über die Befehlszeile zu dem Speicherort, an dem Sie pymongo test insert.py gespeichert haben. Führen Sie dann die Datei mit dem Python-Befehl pymongo test insert.py aus.

Abfrage in Python

Mit find() können Sie sich alle Dokumente zusammen anschauen. Dazu erstellen Sie eine separate Datei pymongo_test_query.py:

# Get the database using the method you defined in the pymongo_test_insert file
from pymongo_test_insert import get_database

dbname = get_database()

# Create a new collection
collection_name = dbname["user_1_items"]

item_details = collection_name.find()
for item in item_details:
    # This does not give a readable output
    print(item)

Navigieren Sie über die Befehlszeile zu dem Ordner, in dem Sie pymongo test query.py gespeichert haben. Sie können den Befehl python pymongo test query.py verwenden und das Programm ausführen.

Die Daten können angezeigt werden, aber das Format ist nicht ideal. Hier sind also die Artikelnamen und ihre Kategorien zum Ausdrucken:

print(item["item_name"], item["category"])

Obwohl MongoDB alle Daten erhält, erhalten Sie beim dritten Dokument einen Python-KeyError. Verwenden Sie Pandas, um Probleme mit fehlenden Daten in Python-DataFrames zu behandeln.

DataFrames sind zweidimensionale Datenstrukturen, die in der Datenverarbeitung verwendet werden. Beispielsweise gibt die Methode discover() von Pymongo Dictionary-Objekte zurück, die mit nur einer Codezeile in einen Datenrahmen umgewandelt werden können.

Installieren Sie die Pandas-Bibliothek als:

python -m pip install pandas

Ersetzen Sie die for-Schleife durch den folgenden Code, um KeyError in einem Schritt zu behandeln:

from pandas import DataFrame

# convert the dictionary objects to a data frame
items_dfs = DataFrame(item_details)
print(items_dfs)

Denken Sie daran, print(item['item name'], item['category']) auszukommentieren. Bei fehlenden Werten werden NaN und NaT verwendet, um die Fehler zu ersetzen.

Index in Python und MongoDB

Die Anzahl der Dokumente und Sammlungen in einer realen Datenbank wächst ständig. In einer umfangreichen Sammlung kann die Suche nach bestimmten Papieren – zum Beispiel Aufzeichnungen, die als Zutat Allzweckmehl enthalten – sehr lange dauern.

Indizes machen Datenbanksuchen schneller, effizienter und kostengünstiger – zum Beispiel Sortieren, Zählen, Abgleichen usw.

Auf Sammlungsebene definiert MongoDB Indizes. Es fügt unserer Sammlung neue Dokumente hinzu, um den Index logischer zu gestalten.

Mit der Methode insert many() können Sie mehrere Dokumente gleichzeitig einfügen.