SQLAlchemy Column to Row Transformation und umgekehrt - ist das möglich?

Ich suche nach einer SQLAlchemy-Lösung zum Konvertieren eines von einer Formularübermittlung empfangenen Diktats in eine Reihe von Zeilen in der Datenbank, eine für jedes übermittelte Feld. Hiermit können Sie Einstellungen vornehmen, die in den verschiedenen Anwendungen sehr unterschiedlich sind. Es ist jedoch sehr wahrscheinlich anwendbar, um Pivot-Tabellen-ähnliche Funktionen zu erstellen. Ich habe solche Dinge in ETL-Tools gesehen, aber ich habe nach einer Möglichkeit gesucht, dies direkt im ORM zu tun. Ich konnte keine Dokumentation finden, aber vielleicht habe ich etwas verpasst.

Beispiel:

Übermittelt vom Formular: {"UniqueId": 1, "a": 23, "b": "Hello", "c": "World"}

Ich möchte, dass es (im ORM) so transformiert wird, dass es in der Datenbank wie folgt aufgezeichnet wird:

_______________________________________
|UniqueId| ItemName   | ItemValue     |
---------------------------------------
|  1     |    a       |    23         |
---------------------------------------
|  1     |    b       |    Hello      |
---------------------------------------
|  1     |    c       |    World      |
---------------------------------------

Nach einer Auswahl wird das Ergebnis (im ORM) wieder in eine Datenzeile von jedem der einzelnen Werte umgewandelt.

---------------------------------------------------
| UniqueId  |  a     |     b      |       c       |

---------------------------------------------------
|   1       |  23    |   Hello    |   World       |

---------------------------------------------------

Ich würde bei einem Update davon ausgehen, dass die beste Vorgehensweise darin besteht, ein Löschen / Erstellen in eine Transaktion einzufügen, damit die aktuellen Datensätze entfernt und die neuen eingefügt werden.

Die endgültige Liste der Artikelnamen wird in einer separaten Tabelle gespeichert.

Völlig offen für elegantere Lösungen, möchte sich aber nach Möglichkeit aus der Datenbank heraushalten.

Ich verwende den declarative_base-Ansatz mit SQLAlchemy.

Danke im Voraus...

Prost,

Paul

Antworten auf die Frage(1)

Ihre Antwort auf die Frage