SqlAlchemy und PyQt5-ModelView

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
MoonKid
User
Beiträge: 105
Registriert: Mittwoch 10. Dezember 2014, 16:24

Ich zerbreche mir gerade den Kopf darüber, ob und wie ich das ModelView-Konzept von PyQt5 auf meine mit SqlAlchemy abgebildeten Daten anwenden könnte.

Auf View-Seite kann ich QTreeView verwenden.
Als Model sehe ich bisher QStandardItemModel.

Aber auch dieses Model muss ich mit Daten "befüllen". Somit entsteht wieder die Notwendigkeit zwischen dem Model und der von SqlAlchemy.Base-Klasse abgeleiteten Klasse der jeweiligen Datenbanktabelle hin- und herübersetzen zu müssen. Dafür brauche ich ja dann auch kein TreeView-Model mehr.

Qt scheint eigenen Datenbankanbindungen mitzubringen und entsprechende Model-Klassen dann auch dafür anzubieten. Wollte mich jetzt aber eigentlich nicht von sqlalchemy wegbewegen.

Macht eine Verbindung des Qt-ModelView-Konzepts und sqlalchemy überhaupt Sinn?
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

Es gibt Camelot und das benutzt genau das: http://www.python-camelot.com/. Mir selber gefällt es nicht, ohne dass ich genau wüsste, warum nicht - bis auf zwei allerdings schwerwiegende Umstände:

- Neueste Version: 13.4.13 vom 12. April 2013 (nein, ich habe mich bei der Jahreszahl nicht verschrieben)
- Scheint nach wie vor nur mit Python 2 zu laufen (2.7). Saudumm, angesichts dessen, dass sowohl PyQt als auch SQLAlchemy schon ewig und drei Tage mit Python 3 laufen.

Für das ModelView-Konzept von PyQt musst Du allemal zwischen Deinen Objekten und den PyQt-Model-Klassen übersetzen. Du kannst allerdings Dein eigenes Modell von QAbstractItemModel, QAbstractTableModel (hier wohl naheliegend), QAbstractListModel ableiten und musst dann zumindest die Daten nicht noch mal im Modell speichern. Trivial ist das allerdings auch nicht grade.

Ich probiere auch gerade mit Datenbankanwendungen und PyQt5 herum, im Augenblick mit der Qt-eigenen Datenbankanbindung. Scheint mir trotz diverser Probleme doch etwas einfacher.
MoonKid
User
Beiträge: 105
Registriert: Mittwoch 10. Dezember 2014, 16:24

http://doc.qt.io/qt-5/qabstracttablemodel.html

Wenn ich das Englisch richtig verstehe, steht dort aber, es wäre nicht für QTreeViews geeignet. Ich würde aber gerne ein QTreeView verwenden, bzw. sehe keine andere Möglichkeit.

Ich möchte Daten dieser Art in einer Liste mit Spalten darstellen: Name, Vorname, Geb.Datum, Beruf
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

Dass QAbstractTableModel nicht für QTreeViews gedacht ist, ist ganz richtig, dafür müsstest Du Dein Modell dann vom QAbstractItemModel ableiten. Eine Liste mit Spalten wäre aber eine Tabelle und keine Baumstruktur. Da scheint mir ein QTableView geeigneter (oder Du hast Wünsche an die Darstellung, die Du noch nicht beschrieben hast). Schau Dir vielleicht mal die Einführung zu Model/View an: http://doc.qt.io/qt-5/model-view-progra ... el-classes, da sind die verschiedenen Grundmodelle ganz schön beschrieben (und bebildert).

Ich habe allerdings selbst auch mal mit SQLAlchemy und PyQt5 herumprobiert und hatte am Ende den Eindruck, mit einem QStandardItemModel gar nicht so schlecht zu fahren. Da ist halt schon sehr viel eingebaut.
Antworten