DB mit Python 3.7 und diese mit GUI verknüpfen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Pyvin
User
Beiträge: 5
Registriert: Donnerstag 22. August 2019, 12:45

Hallo Leute,

ich plane zurzeit ein GUI mit der ein Benutzer einmal Rezepte in einer DB sammelt und in einer anderen Lebensmittel.
Durch das Betätigen eines Buttons soll eine Abfrage gestartet werden ("Rezept benötigt 100ml Wasser, 1 Stck Apfel -> Überprüfe ob vorhanden in Lebensmittel DB")

So sollen mir nur alle Rezepte angezeigt werden wo die entsprechenden Lebensmittel sowie die dazugehörige Menge vorhanden ist.


Meine Versuche:

1. Pywebserver der mir GUI in HTML auswirft und die DBs wollte ein Bekannter mit PHP machen

- ich suche allerdings nach einer All in One Lösung von Python


2. Ich hatte unglaublich Probleme mit Tkinter da diese nicht über ein Webserver kompatibel ist, mit Qt wollte der Webserver immernoch nicht und mit Flask hatte ich mehr oder weniger die gleichen Probleme, geht aber hier eher darum das ich nicht genau weiß wie ich es am geschicktesten mache die Datenbank abfragen und executes in das GUI mitaufzunehmen.


Ich hab es schon geschafft z.b. bei Tkinter oder QT durch ein Button bsplw. eine Tabelle erstellen zu lassen, nur habe ich unwahrscheinlich Probleme mit der Kompletten Planung des Programms und merke selbst... ich komme durcheinander.



Kann mir einer von euch helfen wie ich das Projekt am besten umsetze bzw. plane ?

Was habt Ihr für Erfahrungen mit Datenbank abfragen u.ä. mit Python GUIs, achso ich habe bisher auch
nur mit SQLite rumprobiert, sollte aber auch reichen für das Projekt.

Grüße
__deets__
User
Beiträge: 14523
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich verstehe nicht, was du da vorhast. Womit vielleicht schon eines der grundlegenden Probleme zutage tritt: erstmal hinreichend genau zu beschreiben, WAS du erreichen willst. Und zwar ohne Benennung von bestimmten Loesungen und Technologien. Sondern aus der Sicht eines potentiellen Benutzers. Ggf. auch in verschiedenen Rollen, als zB ein einfacher Benutzer der nur ein Rezept nachkochen will, und ein anderer Benutzer dessen Aufgabe es ist, ein neues Rezept so einzupflegen, dass das System damit klar kommt.

Die ganzen Ausfuehrungen zu Webservern und GUI-Toolkits, und dann auch noch Webservern und Webservern (Flask) ergeben keinen Sinn.

Ansonsten kann man allgemein nur sagen: das geht schon alles, man kann problemlos in GUIs mit Datenbanken arbeiten. Warum auch nicht? Bestenfalls fortgeschrittene Themen wie eine gute Undo/Redo-Funktionalitaet stellen da Herausforderungen dar, aber das muss man ja auch nicht anbieten.
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo Pyvin,

da geht einiges durcheinander. Datenbankmodelle bildet man am besten mit SQLAlchemy. Da braucht man sich nicht um die konkrete SQL-Datenbankimplementierung kümmern und kann das Datenbanksystem leicht austauschen. SQLite reicht aber für das, was Du da vorhast, erstmal.

Die Datenhaltung ist dann erst einmal ganz unabhängig von der GUI. Ob Du Dich nun für Tkinter, Qt oder was mit Web entscheidest, ist zweitrangig. Als erstes solltest Du die Funktionalität programmieren. Das heißt, Du brauchst Funktionen zum Abfragen eines Rezepts und dem Abgleich mit den Lebensmitteln, etc.

Wie sieht denn Dein Datenbankschema-Entwurf zur Zeit aus?

Wo Du für eine Datenbank PHP brauchst, sehe ich nicht.
Pyvin
User
Beiträge: 5
Registriert: Donnerstag 22. August 2019, 12:45

Also um ehrlich zu sein ich habe kein Schema und ich merke auch schon von euren Antworten wo meine Probleme liegen.
Habt Ihr denn eine Idee wie ich vernünftig eine Datenbankplane ?

Ich mein ich weiß das ich eine DB hab mit der Lebensmittel Tabelle und eine DB für die Rezepte wo jedes Rezept eine eigene Tabelle bekommen soll, aber genau da tu ich mich schwer. Kann ich das alles mit SQL Alchemy lösen ? Bzw habt ihr noch Ideen für tutorials das mir die Planung einfacher fällt ?
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

Mehrere Datenbanken ist der erste Fehler, jedes Rezept eine eigene Tabelle der nächste.
Zuerst mußt Du Dir überlegen, welche Daten du speichern willst. Als zweites, welche Fragen Du anhand der Daten beantworten willst.
Hast Du das gemacht, ergeben sich aus den Beziehungen zwischen den Daten das Tabellenformat fast zwangsläufig.
Pyvin
User
Beiträge: 5
Registriert: Donnerstag 22. August 2019, 12:45

Ahh okay,

Weil aus User Sicht sollen Lebensmittel angelegt werden sowie Rezepte und diese Werte sollen auf in einer Tableview angezeigt werden (User drückt Button und sieht in der Tableview seine Lebensmittel -> das gleiche für Rezepte)
Das interessante kommt dann wenn der User wissen will welche Rezepte kann ich kochen? -Ausgabe-> Zeige mir alle Rezepte dessen Lebensmittel auf Lager sind, sprich ignoriere alle Rezepte für die ich keine Zutaten habe.
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

Jetzt mußt Du noch, das was Du hier umgangssprachlich formuliert hast, noch formaler beschreiben.
Ein Lebensmittel besteht aus einem Namen, der Stückelung (Gramm, Liter, Anzahl, ...) und was sonst noch so ein Lebensmittel ausmacht.
Ein Warenkorb für einen User besteht aus mehreren Lebensmitteln und dazugehörigen Mengenangaben.
Ein Rezept besteht aus einem Titel, einer Beschreibung, für wieviele Personen, Zubereitungszeit, etc, und mehreren Lebensmitteln und Mengenangaben.
usw.
Daran kann man dann ablesen, welche Tabellen man braucht, welche n:m-Verknüpfungen bestehen und welche zusätzlichen Attribute diese haben.
Antworten