183 votes

Requête Flask SQLAlchemy, spécifier les noms des colonnes

Comment puis-je spécifier la colonne que je veux dans ma requête en utilisant un modèle (il sélectionne toutes les colonnes par défaut) ? Je sais comment le faire avec la session sqlalchmey : session.query(self.col1) mais comment le faire avec des modèles ? Je ne peux pas faire SomeModel.query() . Y a-t-il un moyen ?

3voto

Carlos RC Points 31

J'utilise généralement cet extrait :

fields = ["col1", "col2", ...]\
session.query(map(lambda x: getattr(SomeModel.c, x), fields))

2voto

Basurp Patil Points 41

result = ModalName.query.add_columns(ModelName.colname, ModelName.colname)

0voto

fabriciorissetto Points 100

Como session.query(SomeModel.col1) renvoie un tableau de tuples comme ceci [('value_1',),('value_2',)] si vous voulez convertir le résultat en un réseau simple vous pouvez le faire en utilisant l'une des déclarations suivantes :

values = [value[0] for value in session.query(SomeModel.col1)]
values = [model.col1 for model in session.query(SomeModel).options(load_only('col1'))]

Résultat :

 ['value_1', 'value_2']

0voto

user2599052 Points 715

Une syntaxe alternative pour récupérer l'entité avec des colonnes spécifiques :

any_query.with_entities(Entity).options(load_only(Entity.col))

-16voto

happygoat Points 356

Un exemple ici :

movies = Movie.query.filter(Movie.rating != 0).order_by(desc(Movie.rating)).all()

Je recherche dans la base de données les films dont la note est inférieure à 0, puis je les ordonne par note, en commençant par la note la plus élevée.

Jetez un coup d'œil ici : Sélectionner, Insérer, Supprimer dans Flask-SQLAlchemy

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X