SQLAlchemy Column to Row Transformation i vice versa - czy to możliwe?
Szukam tylko rozwiązania SQLAlchemy do konwersji dyktatu otrzymanego z przesłanego formularza na szereg wierszy w bazie danych, po jednym dla każdego przesłanego pola. Ma to na celu obsługę preferencji i ustawień, które różnią się znacznie w zależności od aplikacji. Ale jest bardzo prawdopodobne, że będzie to miało zastosowanie do tworzenia funkcji w postaci tabeli przestawnej. Widziałem tego typu rzeczy w narzędziach ETL, ale szukałem sposobu, aby to zrobić bezpośrednio w ORM. Nie mogłem znaleźć żadnej dokumentacji na ten temat, ale może coś przeoczyłem.
Przykład:
Przesłano z formularza: {"UniqueId": 1, "a": 23, "b": "Hello", "c": "World"}
Chciałbym, aby został przekształcony (w ORM) tak, aby był zapisywany w bazie danych w ten sposób:
_______________________________________
|UniqueId| ItemName | ItemValue |
---------------------------------------
| 1 | a | 23 |
---------------------------------------
| 1 | b | Hello |
---------------------------------------
| 1 | c | World |
---------------------------------------
Po wybraniu wynik zostanie przekształcony (w ORM) z powrotem w wiersz danych z każdej z indywidualnych wartości.
---------------------------------------------------
| UniqueId | a | b | c |
---------------------------------------------------
| 1 | 23 | Hello | World |
---------------------------------------------------
Przy aktualizacji chciałbym założyć, że najlepszym sposobem postępowania byłoby zawinięcie kasowania / tworzenia w transakcji, aby bieżące rekordy zostały usunięte, a nowe dodane.
Ostateczna lista ItemNames będzie przechowywana w osobnej tabeli.
Całkowicie otwarty na bardziej eleganckie rozwiązania, ale chciałby trzymać się z dala od bazy danych, jeśli to możliwe.
Używam podejścia declarative_base z SQLAlchemy.
Z góry dziękuję...
Twoje zdrowie,
Paweł