ich bin gerade dabei ein Projekt zu starten. Jetzt habe ich Angst, dass ich vielleicht ein Werkzeug, ein Modul, irgend etwas übersehen habe, weil mir einfach der Überblick fehlt.
Es geht darum, dass an verschiedenen Stellen (im Sinne von Orten) Daten erfasst werden sollen. Dafür würde ich gerne ein Qt basierte Oberfläche verwenden, weil die mit dem Designer recht schnell erstellt sind und die klassischen GUI-Elemte damit ganz gut so auf das Layout gesetzt werden können, dass im Zweifelsfall Tastatur- und Touchbedienung möglich sind (es handelt sich nicht um mobile Geräte).
Die erfassten Daten müssen in einer Datenbank gespeichert werden.
Zusätzlich muss es noch eine Art "Leitstand" geben, den man verwenden kann um Informationen über die Daten zu erhalten.
Da schwebte mir eine Webbasierte Oberfläche vor, weil man mit Hilfe der Hyperlinks sehr schön durch die Daten navigieren könnte.
Die Frage ist was ich wofür nehme. Ich habe an Django für die Weboberfläche gedacht. Der Vorteil wäre, dass ich damit auch die Datenmodelle definieren könnte und mir Anfangs die Programmierung deren Oberfläche zum Pflegen sparen könnte, weil ich die Pflege einfach über die Admin-Oberfläche erledigen könnte.
Was mache ich mit den Qt-Clients? Benutze ich SQLAlchemy um mit der Datenbank zu sprechen? Dann pflege ich die Modelle doppelt. Verwende ich die Modelle aus dem Django-Paket? Oder setze ich requests an den Webserver ab, weil der ja eh die Datenbasis verwaltet?
Ich sehe im Moment folgende mögliche Optionen:
- Qt-Clients als Erfassungsprogramme mit SQLAlchemy auf der Datenbank
- Weboberfläche mit Bottle über SQLAlchemy auf der Datenbank
- Nachteil: Ich muss die Oberflächen zum Verwalten der Stammdaten von Anfang an selbst bauen
- Qt-Clients holen sich die Daten via HTTP-Requests aus der Webanwendung
- Weboberfläche mit Django.
- Hat den Vorteil, dass ich die Admin-Oberfläche von Django für die Datenpflege nutzen kann.
- Hat den Nachteil, dass die Kommunikation vom Qt-Client über HTTP-Requests einige Vorteile der direkten Kommunikation mit der Datenbank kaputt macht. Zum Beispiel das kurzfristige Sperren von Datensätzen auf der Datenbankebene.
Gruß
Sparrow