Resurrection: SQLAlchemy
Opublikowano: 31.05.2017
Ostatnia modyfikacja: 10.01.2025
Nie, nie zapomniałem, że robię głównie w Pythonie i nie zapomniałem że moją główną dziedziną działalności są internety. Po kilku miesiącach dłubania w drobnicy przyszedł czas powrotu do Flaska i SQLAlchemy. Z przytupem.
Hybrid property
Sytuacja wyglądała tak, że potrzebowałem posortować query po kolumnie wyliczeniowej, która dodatkowo jest w dowiązanej tabeli. Prościzna w żywym SQL-u, nie aż taka w SQLAlchemy. Szczęśliwie nie ma sytuacji bez wyjścia, można użyć column_property, ale jest i nowoczesność w domu i zagrodzie pod postacią hybrid_property. W skrócie chodzi o to, że taki atrybut inaczej się wylicza, gdy jest pobierany z instancji a inaczej z obiektu klasy (np. przy budowaniu query). Jak to wygląda?
Atrybut dostępny z instancji jest zwykłą sumą robioną w Pythonie. Atrybut dostępny z obiektu klasy jest wyliczany przez podzapytanie po stronie SQL. Działa jak złoto, można zwrócić wynik posortowany po tym atrybucie.