MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Python-Datenbankprogrammierung mit MongoDB für Anfänger

Der Zweck dieses Lernprogramms zur Programmierung von Python-Datenbanken besteht darin, eine sanfte Einführung in die Verwendung einer NoSQL-Datenbank als Datenspeicher für Python-Anwendungen zu geben. Die beabsichtigte Zielgruppe sind Entwickler auf Anfängerniveau oder Entwickler auf mittlerem Niveau, die mit der Verwendung von SQL-orientierten Datenbanken wie Oracle, SQL Server oder MySQL vertraut sind. Die Demonstrationen in diesem Artikel laufen parallel zu den Demonstrationen, die in anderen Artikeln zur SQL-Datenbank-Programmierung mit Python verwendet werden, z. B. Python-Datenbankprogrammierung mit SQL Express für Anfänger, und verwenden ebenfalls Python 3.

Was ist NoSQL?

Die Popularität von Python nimmt weiter zu, zum Teil aufgrund der Leichtigkeit, mit der es mit neuen Technologien arbeiten kann. Eine solche „neue“ Technologie ist die Verwendung von „NoSQL“-Datenbanken. Eines der attraktivsten Merkmale dieser Art von Datenbanken ist die Tatsache, dass es, wie der Name schon sagt, im Allgemeinen keine zusätzliche Abfragesprache gibt, wie beispielsweise eine von scheinbar vielen Varianten von SQL, die erlernt werden muss, um mit der Datenbank zu arbeiten aus programmatischer Sicht. Dies erleichtert die Anwendungsentwicklung erheblich, da die nativen Datenstrukturen der Programmiersprache und ihre Syntax de facto die „Abfragesprache“ sind, vorausgesetzt natürlich, die entsprechenden Module werden der Entwicklungsumgebung hinzugefügt.

NoSQL-Datenbanken, zusätzlich zu meistens keine Abfragesprache verwenden, strukturieren Daten auch intern auf eine Weise, die sich erheblich von SQL-Datenbanken unterscheidet. Ein Entwickler, der eher an das SQL-Programmierparadigma gewöhnt ist, muss seine Denkweise an die Art und Weise anpassen, wie NoSQL Geschäfte macht. Unter der Haube weist das Design von NoSQL-Datenbankservern die gleiche Unähnlichkeit auf. NoSQL-Datenbankserver konzentrieren sich mehr auf Geschwindigkeit und Skalierbarkeit mit „eventueller Konsistenz“, im Gegensatz zu SQL-Datenbankservern, die sich mehr auf sofortige Konsistenz konzentrieren.

Was ist MongoDB?

MongoDB ist eine von vielen „NoSQL“-Datenbanken. Wie MariaDB verwendet es ein eigenes Benutzernamen- und Passwortsystem für die Zugriffsverwaltung. MongoDB bietet nicht nur kostenlos herunterladbare Serversoftware, sondern auch eine kostenlose Cloud-basierte Einführungsoption (über seinen Atlas). Angebot), wodurch die Notwendigkeit des Herunterladens und Konfigurierens einer Instanz verringert wird. Die Demonstrationen in diesem Tutorial zur Datenbankprogrammierung verwenden die in der Cloud gehostete kostenlose Instanz von MongoDB.

Wie bei Python und jedem Datenbankserver ist ein zusätzliches Datenbanktreibermodul, nämlich PyMongo , ist erforderlich, damit Python mit dem MongoDB-Server und allen darin enthaltenen Datenbanken kommunizieren kann. Darüber hinaus bietet MongoDB wie jeder Datenbankserver ein begleitendes Verwaltungstool namens MongoDB Shell . Die Demonstrationen in diesem Artikel verwenden eine MongoDB-Datenbank, die mit diesem Tool erstellt wurde. Beachten Sie, dass MongoDB Shell eines von vielen Verwaltungstools für MongoDB ist.

  • Download des MongoDB-Community-Servers
  • Kostenfreies Cloud-basiertes Einführungsangebot von MongoDB
  • MongoDB-Shell-Download

Bitte beachten Sie, dass die geposteten Links zum Zeitpunkt der Erstellung dieses Artikels aktiv waren. Wenn die Links nicht mehr aktiv sind, können diese Produkte über die bevorzugte Suchmaschine heruntergeladen werden.

So konfigurieren Sie MongoDB für die Softwareentwicklung

Das kostenlose Cloud-basierte Einführungsangebot von MongoDB Die Konfiguration erfolgt vollständig webbasiert. Es lässt sich zum Zwecke des Single-Sign-On bequem mit dem eigenen Google-Konto verknüpfen. Beachten Sie einfach die folgenden Einschränkungen:

  • Wählen Sie einen Daten-Hosting-Dienst, der physisch in der Nähe ist. Der in diesem Artikel gezeigte Hosting-Service in Virginia ist möglicherweise nicht ideal für jemanden, der weit von dort entfernt ist.
  • Das Passwort, das zum Verbinden einer Anwendung mit dem Datenbankserver verwendet wird, muss sicher gespeichert werden, da es bei Verlust nicht wiederhergestellt werden kann. Es kann nur zurückgesetzt werden.
  • Der einmal festgelegte Clustername kann nicht mehr geändert werden. Die Demonstrationen in diesem Artikel verwenden einen Cluster namens Cluster0 .
  • Stellen Sie sicher, dass alle IP-Adressen, von denen Anwendungen, einschließlich MongoDB Shell, in den Sicherheitseinstellungen konfiguriert sind.
  • Die MongoDB-Shell hat möglicherweise kein Installationsprogramm. Achten Sie immer darauf, den Pfad zu dem Ordner, der diese Anwendung enthält, in den Betriebssystempfad aufzunehmen.

So stellen Sie eine Verbindung zum MongoDB-Datenbankserver her

Nach erfolgreicher Konfiguration des Cloud-basierten MongoDB-Clusters muss die spezielle Verbindungszeichenfolge notiert werden, die für die Verbindung verwendet wird. Die nachstehenden Zeichenfolgen können auch abgerufen werden, indem Sie sich bei der MongoDB Atlas Site anmelden und auf Verbinden klicken Schaltfläche:

Abbildung 1 – Das MongoDB-Atlas-Dashboard mit hervorgehobener Schaltfläche „Verbinden“

Beachten Sie, dass Einstellungen wie Datenbank-Benutzername und -Passwort sowie zulässige IP-Bereiche für die Verbindung in den Links Datenbankzugriff bzw. Netzwerkzugriff festgelegt werden können.

Nachfolgend zwei Anschlussbeispiele. Die erste ist für MongoDB Shell.

MongoDB:Verbindung über die Befehlszeile

Öffnen einer Windows-Eingabeaufforderung wird in Python-Datenbankprogrammierung mit SQL Express für Anfänger unter Eingabeaufforderungsfenster öffnen erläutert Überschrift.

Abbildung 2 – Herstellen einer Verbindung über die Befehlszeile mit der MongoDB-Shell

Beachten Sie, dass der Befehl zum Öffnen der MongoDB-Shell je nach Betriebssystem unterschiedlich ist. Der Clustername kann variieren, und die hervorgehobenen Parameter im Befehl müssen auf die Besonderheiten des cloudbasierten MongoDB-Setups geändert werden. Unter Windows heißt dieser Befehl mongosh . Beachten Sie, dass der Datenbankname RazorDemo ist unten enthalten, da dies die Datenbank ist, die in den Demonstrationen in diesem Programmier-Tutorial verwendet wird. Der Befehl akzeptiert auch einen zusätzlichen Parameter für das Passwort, wie unten gezeigt:

Abbildung 3 – Authentifizierung mit dem Passwort in der Befehlszeile.

Beachten Sie, dass es für Entwicklungszwecke praktisch ist, das Passwort in der Befehlszeile zu verwenden, anstatt es jedes Mal eingeben zu müssen, aber denken Sie daran, dass das Passwort im Verlauf der zuvor ausgeführten Befehle angezeigt wird. Diese Option sollte nicht in Entwicklungsumgebungen verwendet werden, in denen andere Benutzer auf den vorherigen Befehlsverlauf zugreifen können.

Außerdem dachte hoffentlich niemand, dass ich tatsächlich 123456 verwenden würde als Passwort, richtig?

Abbildung 4 – Nur nachsehen 🙂

Beachten Sie, dass in beiden obigen Beispielen das ^ wird als Zeilenfortsetzungszeichen in der Windows-Eingabeaufforderung verwendet.

MongoDB von Python aus verbinden

Die folgende Zeichenfolge kann mit geeigneten Änderungen zur Verwendung durch PyMongo in den Python-Code eingefügt werden Fahrer:

Abbildung 5 – Verbindung über Python und PyMongo

In der obigen Verbindungszeichenfolge der Datenbankname RazorDemo wird anstelle von myFirstDatabase verwendet .

So erstellen Sie eine Datenbank in MongoDB

MongoDB „erstellt“ keine Datenbank, bis diese Datenbank „verwendet“ wird und Daten tatsächlich hineingeschrieben werden. Das Bild unten zeigt eine erfolgreiche Verbindung zum MongoDB-Atlas-Dienst mithilfe von RazorDemo Datenbank, aber bei Verwendung von show dbs wird keine solche Datenbank aufgelistet Befehl:

Abbildung 6 – Noch keine RazorDemo-Datenbank…

Wie man eine Datenbank in MongoDB „benutzt“

In MongoDB wird eine Datenbank immer dann „verwendet“, wenn sie entweder direkt über die Abfragezeichenfolge verbunden ist oder wenn der Datenbankname das Argument der Verwendung ist Befehl. Beachten Sie, dass beim Aufrufen dieses Befehls für die aktuell ausgewählte Datenbank eine andere Meldung angezeigt wird als beim Wechseln zu dieser Datenbank:

Abbildung 7 – Wechseln zwischen Datenbanken

Um die Datenbank tatsächlich zu „erstellen“, müssen einige Daten eingefügt werden. Die RazorDemo Datenbank aus den vorherigen Artikeln, Erste Schritte mit Razor Pages Using C# and Python Database Programming with SQL Express for Beginners, verwendet zwei Tabellen, nämlich Artists und Alben . In MongoDB wird das, was eine SQL-orientierte Datenbank eine Tabelle nennt, als Sammlung bezeichnet . Erstellen von zwei Einträgen in Sammlungen mit dem Namen Künstler und Alben erstellt sowohl die Datenbank als auch die Sammlungen.

Jeder Eintrag in einer Sammlung wird als Dokument bezeichnet . Dies ist analog zu einem Datensatz in einer SQL-orientierten Datenbanktabelle.

Beachten Sie, dass es für eine größere Anwendung ebenso wichtig ist, die Tabelle erstellen zu speichern Anweisungen in einer SQL-orientierten Datenbank gelten die gleichen Überlegungen auch für die anfänglichen Datenbank- und Sammlungserstellungsbefehle für eine MongoDB-Datenbank für eine größere Anwendung.

Die folgenden Befehle erstellen die Künstler Sammlung, indem Sie ein einzelnes Dokument darin einfügen, und fragen Sie dann die Künstler ab Sammlung, um den Erfolg des Einfügevorgangs zu überprüfen. Beachten Sie, wie der Einfügevorgang die JSON-Syntax verwendet:

db.Artists.insertOne({artist_name: "Skeered Tigon Stripes"})

db.Artists.find({})

Listing 1 - Inserting a new document.

Diese Befehle geben in der MongoDB-Shell die folgende Ausgabe aus:

Abbildung 8 – Erstellen der Künstlersammlung

Die _id oben gezeigt wurde automatisch erstellt und ist innerhalb der Sammlung einzigartig, ähnlich wie ein automatisch generierter Primärschlüsselwert in einer SQL-orientierten Datenbank.

Beachten Sie, dass MongoDB Shell möglicherweise meldet, dass .insert() Befehl ist veraltet. Dieses Beispiel verwendet .insertOne() Befehl, da dies eine der bereitgestellten Alternativen ist.

Eine ähnliche Syntax kann verwendet werden, um die Alben zu erstellen Sammlung:

db.Albums.insertOne({artist_name: "Skeered Tigon Stripes",album_name: "Genetically Engineered Critters"})

db.Albums.find({})

Listing 2 - Inserting another new document

Abbildung 9 – Erstellen der Albensammlung

Hinweis:Die Warnung bezüglich caniuse-lite erscheint, wenn Sie die Eingabetaste drücken bevor Sie den Befehl zum Erstellen eines Dokuments ausführen. Die MongoDB-Shell ermöglicht es, einen Befehl über mehrere Zeilen zu unterbrechen, bevor er abgeschlossen wird. Diese Warnung weist darauf hin, dass MongoDB Shell möglicherweise einen veralteten Treiber verwendet und in einer zukünftigen Version aktualisiert werden muss.

Es scheint den Dokumenterstellungsprozess nicht zu unterbrechen.

Einige weitere Dokumente für die Alben Sammlung:

db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Volume Control: No" })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Verse Vica })
db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Rotten to the Core" })

db.Albums.find({})

Listing 3 - Additional documents for the Albums collection

Abbildung 10 – Neue zusätzliche Albumdokumente

KEINE Fremdschlüsselbeschränkungen

Da MongoDB kein Verwaltungssystem für relationale Datenbanken ist, bietet es keinen Mechanismus zum Erzwingen der Arten von Fremdschlüsseleinschränkungen, die in SQL-orientierten Datenbanktabellen zwischen Sammlungen verwendet werden. Es erwartet, dass die Anwendung solche Beziehungen aufrechterhält und durchsetzt. Im Kontext von MongoDB Shell obliegt es dem Entwickler, die Werte richtig einzugeben, um sicherzustellen, dass eine Beziehung zwischen den Dokumenten in den Sammlungen abgeleitet werden kann.

Die .deleteOne() Befehl kann verwendet werden, um falsch eingegebene Dokumente zu löschen:

db.Albums.deleteOne({ artist_name: "Skeered Tigon Stripes", album_name: "I Typed the Album Name Wrong" })
Listing 4 - Deleting a document.

Beachten Sie, dass, wenn ein Dokument nicht mit den eingegebenen Parametern übereinstimmt, kein Fehler angezeigt wird, stattdessen zeigt die Bestätigungsmeldung, dass nichts gelöscht wurde:

Abbildung 11 – Bestätigungsmeldung, dass keine Dokumente gelöscht wurden

Die .deleteMany() Der Befehl kann verwendet werden, um mehrere Datensätze zu löschen, die einem JSON-Kriterium entsprechen. Der folgende Befehl löscht alle Dokumente in den Albensammlungen, in denen der Künstlername Wert ist nicht Skeered Tigon Stripes :

db.Albums.deleteMany({artist_name: {$ne : "Skeered Tigon Stripes" }})

Listing 5 - Deleting multiple documents based on criteria.

Abbildung 12 – Mehrere Datensätze löschen

Abschließende Gedanken zur Python-Datenbankprogrammierung mit MongoDB

Nachdem wir nun gelernt haben, wie man eine Verbindung zu einer MongoDB-Datenbank herstellt und wie man eine NO-SQL-Version einer Tabelle mit „Datensätzen“ erstellt, können wir mit der Arbeit mit Python-Skripten fortfahren, um Daten in unsere MongoDB-Datenbank einzufügen. Wir werden diese Diskussion im zweiten – und letzten – Teil dieses Tutorials zur Programmierung von Python-Datenbanken fortsetzen:Entwicklung von Python- und MongoDB-Datenbanken.