Hypothetische Frage
Verfasst: Freitag 11. April 2025, 07:08
Hallo Zusammen,
Angenommen, ich habe ein Template in einer Tabellenkalkulation (Gnumeric, Libre, etc.), welches durch Python/QT/irgendeineDatenbank ersetzt werden soll. Und zwar nicht durch analysieren und nachprogrammieren, sondern einlesen und die Struktur automatisch nachbilden (es gibt ca. 10 verschiedene Templates, sodass der manuelle Aufwand viel zu gross waere).
Weiterhin ist die Struktur nicht einheitlich, d.h. es gibt keine Kopfzeile, sodass in allen Zeilen die Werte in den Spalten immer gleich waeren, sondern halt unterschiedlich. Als Beispiel: in der ersten Zeile stehen in 8 Spalten Positionswerte X, Y, Z, W als Vortext in je einer Spalte, danach die jeweilgen Werte (float) in einer Spalte. In der zweiten Zeile sind diese ganzen Spalten verbunden und es steht nur ein Hinweistext drinnen. In der dritten Zeile gibt es dann eine andere Struktur, usw. usw. Das X,Y,Z,W soll als Text im Template fest drin stehen, die float Werte werden dann spaeter eingegeben. Das Ganze wiederholt sich hier und da, aber voellig unstrukturiert. Z.B. koennten jetzt 10 Zeilen X,Y,Z,W als float folgen, bevor wieder eine Textzeile kommt. Also sozusagen ein voellig 'willkuerliches' Dokument. Und jedes weitere der ca. 10 Dokumente hat wiederum zwar ein aehnliches Format, aber untereinander jeweils komplett abweichend.
Gaebe es eine Kopfzeile und waeren die Spalten in jeder Zeile gleich, so waere es einfach, dass man die Struktur per SQLAlchemy aufbaut und die spaeter eingegebenen Werte in eine Datenbank schreibet. Die Anzeige der Zeilen / Spalten per Grid in QT.
Da sich die Zeilen aber sehr unstetig wiederholen, waere dieser Ansatz ja schon nicht mehr machbar, da sowohl alle Datensaetze unterschiedlich waeren, als auch die Anzeige auf eine GUI schwer zu realisieren waere.
Gibt es dazu Ideen, oder bereits bestehende Loesungen? Koennte man z.B. die Struktur mit Objekten aufbauen, diese per pickle serialisieren und sozusagen als Template dann immer wieder laden? Trotzdem waere dann das Problem, wie man unterschiedliche Zeilen strukturiert in eine Datenbank bringt, bzw. wie man sowas dann (dynamisch?) anzeigt/editierbar macht.
Angenommen, ich habe ein Template in einer Tabellenkalkulation (Gnumeric, Libre, etc.), welches durch Python/QT/irgendeineDatenbank ersetzt werden soll. Und zwar nicht durch analysieren und nachprogrammieren, sondern einlesen und die Struktur automatisch nachbilden (es gibt ca. 10 verschiedene Templates, sodass der manuelle Aufwand viel zu gross waere).
Weiterhin ist die Struktur nicht einheitlich, d.h. es gibt keine Kopfzeile, sodass in allen Zeilen die Werte in den Spalten immer gleich waeren, sondern halt unterschiedlich. Als Beispiel: in der ersten Zeile stehen in 8 Spalten Positionswerte X, Y, Z, W als Vortext in je einer Spalte, danach die jeweilgen Werte (float) in einer Spalte. In der zweiten Zeile sind diese ganzen Spalten verbunden und es steht nur ein Hinweistext drinnen. In der dritten Zeile gibt es dann eine andere Struktur, usw. usw. Das X,Y,Z,W soll als Text im Template fest drin stehen, die float Werte werden dann spaeter eingegeben. Das Ganze wiederholt sich hier und da, aber voellig unstrukturiert. Z.B. koennten jetzt 10 Zeilen X,Y,Z,W als float folgen, bevor wieder eine Textzeile kommt. Also sozusagen ein voellig 'willkuerliches' Dokument. Und jedes weitere der ca. 10 Dokumente hat wiederum zwar ein aehnliches Format, aber untereinander jeweils komplett abweichend.
Gaebe es eine Kopfzeile und waeren die Spalten in jeder Zeile gleich, so waere es einfach, dass man die Struktur per SQLAlchemy aufbaut und die spaeter eingegebenen Werte in eine Datenbank schreibet. Die Anzeige der Zeilen / Spalten per Grid in QT.
Da sich die Zeilen aber sehr unstetig wiederholen, waere dieser Ansatz ja schon nicht mehr machbar, da sowohl alle Datensaetze unterschiedlich waeren, als auch die Anzeige auf eine GUI schwer zu realisieren waere.
Gibt es dazu Ideen, oder bereits bestehende Loesungen? Koennte man z.B. die Struktur mit Objekten aufbauen, diese per pickle serialisieren und sozusagen als Template dann immer wieder laden? Trotzdem waere dann das Problem, wie man unterschiedliche Zeilen strukturiert in eine Datenbank bringt, bzw. wie man sowas dann (dynamisch?) anzeigt/editierbar macht.