Wie gebe ich die gewünschte Spalte in meiner Abfrage mithilfe eines Modells an (standardmäßig werden alle Spalten ausgewählt)? Ich weiß, wie man das mit der sqlalchmey-Sitzung macht:, session.query(self.col1)
aber wie mache ich das mit Modellen? Ich kann es nicht tun SomeModel.query()
. Gibt es einen Weg?
python
sqlalchemy
flask-sqlalchemy
Matthew Scragg
quelle
quelle
ID
, das in beiden Tabellen vorhanden ist.label()
stackoverflow.com/a/11535992/248616ist das gleiche wie
Für den Alias können wir .label () verwenden.
quelle
session.query().with_entities(SomeModel.col1)
Sie können die Funktion load_only verwenden:
quelle
.first()
und.one()
(der Felder und Beziehungen faul / eifrig lädt), - kann als Abfragekomponente festgelegt werdenwith_entities
wie in der akzeptierten Antwort angegeben verwendet und die Abfrage nur diese Felder / ausgewählt.Sie können verwenden
Model.query
, weil dieModel
(oder normalerweise ihre Basisklasse, insbesondere in Fällen, in denen eine deklarative Erweiterung verwendet wird) zugewiesen istSesssion.query_property
. In diesem FallModel.query
entspricht dasSession.query(Model)
.Mir ist nicht bekannt, wie die von der Abfrage zurückgegebenen Spalten geändert werden können (außer durch Hinzufügen weiterer Spalten
add_columns()
).Ihr bester Schuss ist also, das zu verwenden
Session.query(Model.col1, Model.col2, ...)
(wie bereits von Salil gezeigt).quelle
Sie können Query.values, Query.values verwenden
session.query(SomeModel).values('id', 'user')
quelle
Ein Beispiel hier:
Ich frage die Datenbank nach Filmen mit der Bewertung <> 0 ab und bestelle sie dann, indem ich sie zuerst mit der höchsten Bewertung bewerte.
Schauen Sie hier: Wählen, Einfügen, Löschen in Flask-SQLAlchemy
quelle