Z SQLAlchemy, czy istnieje sposób, aby wcześniej wiedzieć, czy relacja będzie leniwy załadowany?
Na przykład, biorąc pod uwagę leniwy związek rodzica-> dzieci i instancję X "rodzica", chciałbym wiedzieć, czy "X.children" jest już załadowany, bez wyzwalania zapytania.Jak sprawdzić, czy leniwy związek nie jest jeszcze załadowany, z SQLAlchemy?
Odpowiedz
Myślę, że możesz sprawdzić słownik atrybutów dziecka, aby sprawdzić, czy dane już tam są.
Lekko neater niż Haes odpowiedź (choć skutecznie robi to samo) jest użycie hasattr(), na przykład:
>>> hasattr(X, 'children')
False
Nice, thanks :) – Joril
To nie działa aktualna sqlalchemy. 'hasattr (obj, field)' nie jest równoważne 'polu w obj .__ dict__'. –
Testowałem w SQLAlchemy 0.8 i to działa, jeśli obiekt jest odłączony. Jednak jeśli jest podłączony, użycie hasattr wyzwala leniwy ładunek "dzieci", co prawdopodobnie nie jest tym, czego potrzebujesz. Zamiast tego w 0.8 możemy użyć wywołania inspect(): 'res = inspect (X)' ''children' in res.unloaded' - który działa niezależnie od tego, czy obiekt jest dołączony czy odłączony. – foz
Można uzyskać listę wszystkich rozładowywane właściwości (zarówno stosunki i kolumny) od sqlalchemy.orm.attributes.instance_state(obj).unloaded
.
Patrz: Completing object with its relations and avoiding unnecessary queries in sqlalchemy
Łatwiejszy sposobem jest użycie inspect()
, co daje te same wyniki:
from sqlalchemy import inspect
from sqlalchemy.orm import lazyload
user = session.query(User).options(lazyload(User.articles)).first()
ins = inspect(user)
ins.unloaded # <- set or properties that are not yet loaded
- 1. Jak sprawdzić, czy obraz jest w pełni załadowany z Picasso
- 2. moduł jeszcze nie załadowany do kontekstu
- 3. Jak mogę sprawdzić, czy Flash jest załadowany na stronie internetowej?
- 4. Czy LINQ jest leniwy?
- 5. Jak sprawdzić, czy obraz jest załadowany lub buforowany w JQuery?
- 6. Jak sprawdzić, czy widget JQuery UI jest załadowany?
- 7. Jak mogę sprawdzić, czy załadowany jest obraz tła?
- 8. Jak sprawdzić, czy element audio HTML5 jest załadowany?
- 9. Codeigniter: jak mogę sprawdzić, czy model jest już załadowany?
- 10. nowy obraz(), jak sprawdzić, czy obraz jest w 100% załadowany czy nie?
- 11. Czy postgres COALESCE jest leniwy?
- 12. Jak sprawdzić, czy mechanizm sprawdzania poprawności jQuery został załadowany?
- 13. Sprawdzanie, czy obraz jest w pełni załadowany lub NIE
- 14. Jak sprawdzić, czy załadowany asynchronicznie skrypt zakończył ładowanie w javascript
- 15. Sprawdź, czy obraz został załadowany z pamięci podręcznej, czy nie.
- 16. Wykrywanie, czy załadowany jest moduł HttpModule
- 17. Nie można utworzyć pola formularza dla „created_by” jeszcze, ponieważ powiązane z modelem „users.User” nie został załadowany jeszcze
- 18. Jak wykryć, czy Moment js jest załadowany z CDN
- 19. Czy Scala mapWartość leniwy?
- 20. Czy możliwe jest leniwy załadowanie adnotacji @Formula?
- 21. Sprawdź, czy obraz jest połowicznie załadowany lub nie w Androidzie
- 22. Jak sprawdzić, czy osadzony dokument SVG jest załadowany na stronę HTML?
- 23. JQuery - Sprawdź, czy obraz jest załadowany?
- 24. Sprawdź, czy jQuery jest załadowany, nie używając zdarzenia gotowego dokumentu
- 25. Jak sprawdzić, czy jest konsola?
- 26. Jak sprawdzić, czy iPad jest iPad Pro
- 27. Magento Jak sprawdzić, czy koszyk jest pusty, czy nie?
- 28. Jak sprawdzić, czy 3g jest aktywne czy nie w Androidzie
- 29. Jak sprawdzić, czy model jest nowy, czy nie?
- 30. Jak sprawdzić, czy NSWindow jest widoczny?
To działa, dzięki :) – Joril