Textfelder an DB-Objekt binden

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
klooney
User
Beiträge: 13
Registriert: Freitag 3. Februar 2023, 17:56

Hallo zusammen,

ich bin gerade dabei, mir die technischen Grundlagen einer DB-Anwendung mit PyQT6 anzueignen. Ich möchte eigentlich nur eine Maske anzeigen, die jeden einzelnen Datensatz einzeln anzeigt (nicht tabellarisch). Die Tabellen sind in der DB normalisiert, so dass eigentlich immer eine Query die Grundlage der angezeigten Daten ist und nicht nur die blanke Tabelle.
In der Maske (Form) sollte man einfach die Datensätze vor und zurückblättern können. Später sollte auch das Suchen möglich sein. Und nun die Preisfrage, die mir auf Anfrage auch nicht Dr. Google beantworten konnte: können die TextEdit-Felder im Formular an einem DB-Objekt gebunden werden, so dass man munter die Datensätze mit einer Datensatznavigation vor und zurückblättern kann? Und bestenfalls ist die Funktionalität so gekapselt, dass mir der grundlegende Code zum navigieren, update, insert und delete erspart bleibt? Ähnlich wie es mit dem Binding von QSqlTableModel() und einem TableView Objekt gemacht wird. Oder träume ich da zu intensiv?
An dieser Stelle wollte ich eigentlich einen Screenshot eines Fake-Formulars einfügen, das ich in qt-designer gebaut habe. Aber ich sehe gerade, dass ich lokale Bilder hier nicht hochladen kann.
Besten Dank für Hilfestellungen aller Art.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du scheinst ja fit genug, wenn du also nix gefunden hast, ist es wohl ein Fiebertraum. Man kann sich da sicher viel schaffen, das deklarativer zu zu gestalten - gerade in Python - aber vorgekaut findet sich dieses Verhalten in Access. Und das meine ich ganz unironisch. Right Tool for the Job und so.
Benutzeravatar
sparrow
User
Beiträge: 4165
Registriert: Freitag 17. April 2009, 10:28

Ich glaube das OpenOffice bzw. LibreOffice Pendant "Base" kann das auch.
klooney
User
Beiträge: 13
Registriert: Freitag 3. Februar 2023, 17:56

Schade, schade.
__deets__ hat geschrieben: Freitag 3. Februar 2023, 20:14 ... Verhalten in Access. Und das meine ich ganz unironisch. Right Tool for the Job und so.
Ja, die Funktionalität entspricht dem wohl so. Da ich Linux nutze, entfällt das jedoch. Die fehlende Access-Lizenz macht die Sache noch unattraktiver für mich.
sparrow hat geschrieben: Freitag 3. Februar 2023, 20:22 Ich glaube das OpenOffice bzw. LibreOffice Pendant "Base" kann das auch.
Da schleppt man das ganze Office Paket immer mit sich herum. Zudem wird ja immer noch etwas Logik in der Anwendung selbst benötigt. Keine Ahnung, was Base dafür bereitstellt, VBA wird es wohl nicht sein. Mit der ganzen DB-Thematik in Python wollte ich mich mal mit PyQT beschäftigen. Ich weiß nicht, wie es euch dabei ergeht. Mir eröffnen sich mit jedem neuen Toolkit Welten.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na ein Leichtgewicht ist Qt ja auch nicht gerade. Und LO hat wohl ein Basic.

Aber klar, Qt ist schon nett. Wenn ich das machen würde, würde ich entsprechende Abstraktionen selbst schaffen. Wahrscheinlich bietet sich dann besonders die Nutzung von sowas wie SQLAlchemy an.
bb1898
User
Beiträge: 199
Registriert: Mittwoch 12. Juli 2006, 14:28

Wieso nicht die Eingabefelder mittels QDataWidgetMapper mit dem QSqlTableModel verbinden? Das nützt auf jeden Fall für die Navigation. Wie weit Du Dich um update, insert, delete drücken kannst, weiß ich nicht - ich nutze die QtSql-Komponenten eher selten. Dokumentation studieren, ausprobieren, evtl. hilft auch der "Qt for Python"-Bereich im Qt-Forum weiter.

Und stimmt, SqlAlchemy im Untergrund, ein Abkömmling von QAbstractTableModel oder auch QStandardItemModel als Grundlage fürs GUI, QDataWidgetMapper und Eingabefelder nach Bedarf - ist nicht in fünf Minuten hingeschrieben, könnte aber gut passen.
Antworten