Comment spécifier la colonne que je souhaite dans ma requête à l'aide d'un modèle (il sélectionne toutes les colonnes par défaut)? Je sais comment faire cela avec la session sqlalchmey:, session.query(self.col1)
mais comment puis-je le faire avec des modèles? Je ne peux pas faire SomeModel.query()
. Y a-t-il un moyen?
python
sqlalchemy
flask-sqlalchemy
Matthew Scragg
la source
la source
ID
champ de conflit qui est présent dans les deux tableaux.label()
stackoverflow.com/a/11535992/248616est le même que
pour alias, nous pouvons utiliser .label ()
la source
session.query().with_entities(SomeModel.col1)
Vous pouvez utiliser la fonction load_only :
la source
.first()
et.one()
(qui chargera les champs et les relations paresseux / impatients), - peut être défini comme composant de requêtewith_entities
comme indiqué dans la réponse acceptée et la requête n'a sélectionné que les champs /.Vous pouvez utiliser
Model.query
, car leModel
(ou généralement sa classe de base, en particulier dans les cas où l'extension déclarative est utilisée) est affectéSesssion.query_property
. Dans ce cas, leModel.query
équivaut àSession.query(Model)
.Je ne connais pas la manière de modifier les colonnes retournées par la requête (sauf en ajoutant plus à l'aide
add_columns()
).Donc, votre meilleur coup est d'utiliser le
Session.query(Model.col1, Model.col2, ...)
(comme déjà montré par Salil).la source
Vous pouvez utiliser Query.values, Query.values
session.query(SomeModel).values('id', 'user')
la source
Un exemple ici:
J'interroge la base de données pour les films avec une note <> 0, puis je les commande par note avec la note la plus élevée en premier.
Jetez un œil ici: Sélectionnez, Insérez, Supprimez dans Flask-SQLAlchemy
la source