Jak określić kolumnę, którą chcę w zapytaniu za pomocą modelu (domyślnie wybiera wszystkie kolumny)? Wiem, jak to zrobić z sesją sqlalchmey: session.query(self.col1)
ale jak to zrobić z modelami? Nie mogę SomeModel.query()
. Czy jest jakiś sposób?
python
sqlalchemy
flask-sqlalchemy
Matthew Scragg
źródło
źródło
ID
pola konfliktu, które jest obecne w obu tabelach.label()
stackoverflow.com/a/11535992/248616jest taki sam jak
dla aliasu możemy użyć .label ()
źródło
session.query().with_entities(SomeModel.col1)
Możesz użyć funkcji load_only :
źródło
.first()
i.one()
(co spowoduje leniwe / niecierpliwe ładowanie pól i relacji), - można ustawić jako komponent zapytaniawith_entities
jak podano w zaakceptowanej odpowiedzi, a zapytanie wybrało tylko te pola /.Możesz użyć
Model.query
, ponieważModel
(lub zwykle jego klasa bazowa, szczególnie w przypadkach, gdy używane jest deklaratywne rozszerzenie) jest przypisanaSesssion.query_property
. W tym przypadkuModel.query
jest odpowiednikiemSession.query(Model)
.Nie znam sposobu modyfikowania kolumn zwracanych przez zapytanie (z wyjątkiem dodawania kolejnych za pomocą
add_columns()
).Więc najlepszym strzałem jest użycie
Session.query(Model.col1, Model.col2, ...)
(jak już pokazał Salil).źródło
Możesz użyć Query.values, Query.values
session.query(SomeModel).values('id', 'user')
źródło
Oto przykład:
Pytam w bazie danych o filmy z oceną <> 0, a następnie sortuję je według oceny z najwyższą oceną.
Spójrz tutaj: Wybierz, Wstaw, Usuń w Flask-SQLAlchemy
źródło