Meine Anwendung besteht aus einer Steuerungsdatei (
Listing 2
) und 2 View-Dateien, die als Templates definiert sind (
Listing 3
und
4
). Bottle erwartet die View-Dateien dabei im Ordner
»views
«
unterhalb der eigentlichen Anwendung. In der Datei
»survey.py
«
erzeugt der Aufruf in Zeile 6 ein
»connection
«
-Objekt zur Kommunikation mit dem MongoDB-Service auf dem gleichen System, auf dem auch das Webframework läuft.
Listing 2
survey.py
Listing 3
views/main.tpl
In den Zeilen 7-8 wird dann ein Handler für die Datenbank und die gewünschte Collection definiert. In Zeile 10 und Zeile 14 wird jeweils eine Route, sprich, eine URL mit dem dazugehörigen Code definiert. Die Einsprungsseite (
»/
«
) gibt lediglich ein Template zurück, das dem Benutzer eine einfach Umfrageseite präsentiert (
»main.tpl
«
). Die daraus resultierende Post-Anweisung wird über die zweite URL (
»/survey
«
) verarbeitet. Hier wird das Ergebnis der Umfrage in einem Dokument mit einem einzigen Feld (
»club
«
) in der Datenbank gespeichert, und der Benutzer bekommt einer Ausgabe, welchen Verein er denn als seinen Lieblingsverein angegeben hat, und wie oft dieser schon von anderen Benutzern angegeben wurde.
Das zweite Template bekommt dabei eine Variable
»club
«
und
»results
«
übergeben (Zeile 25).
»club
«
wird dabei der Inhalt des Eingabebox aus dem ersten Template und enthält den angegeben Lieblingsverein.
»results
«
ist das Ergebnis einer Suche in der Datenbank, wie oft dieser Verein dort schon aufgeführt ist. Beide Variable werden dann in dem View-Template (
Listing 4
) in Zeile 9 und Zeile 10 verwendet. Die Anwendung sieht im Webbrowser dann so aus wie in
Abbildung 1
und
Abbildung 2
dargestellt.
Listing 4
views/result.tpl
Das Beispiel zeigt, wie simpel es ist, mit der Kombination aus Python, MongoDB, Bottle und Pymongo eine Webanwendung zu entwickeln. Das Beispiel ist natürlich bewusst einfach gehalten, aber zeigt, wie die einzelnen Komponenten zusammenarbeiten. Das Beispiel geht auch davon aus, dass MongoDB nur auf einem einzelnen Server läuft, und dass der in Bottle eingebaute Webserver zum Einsatz kommt. In produktiven Umgebungen sollte dies natürlich anders sein, aber für Entwicklungsarbeiten eignet sich das hier vorgestellte Setup sehr gut.
Mittlerweile bin ich dazu übergegangen, Test-Anwendungen als PaaS-Apps in Openshift laufen zu lassen. Hier verweise ich auf einen anderen Artikel von mir zu der Thematik [1] . Mittlerweile kennt Openshift auch eine Cartridge, mit der sich MongoDB als Erweiterung installieren lässt.
Wer sich nun näher mit dem Thema auseinandersetzen möchte, findet unter [2] jede Menge hilfreiche Dokumentation. Dort gibts auch genaue Beschreibung, wie eine Installation von MongoDB unter Openshift funktioniert.
Infos
In Version 2.0 haben die MongoDB-Entwickler die NoSQL-Datenbank beschleunigt und eine Reihe neuer Features integriert.