flask sqlalchemy query avec le mot clé comme variable

Disons que j'ai un modèle comme celui-ci:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    hometown = db.Column(db.String(140))
    university = db.Column(db.String(140))

Pour obtenir une liste des utilisateurs à partir de New York, voici ma requête:

User.query.filter_by(hometown='New York').all()

Pour obtenir une liste des utilisateurs qui vont à l'USC, c'est ma requête:

User.query.filter_by(university='USC').all()

Et pour obtenir une liste des utilisateurs de New York, et qui vont à l'USC, c'est ma requête:

User.query.filter_by(hometown='New York').filter_by(university='USC').all()

Maintenant, je voudrais générer dynamiquement ces requêtes basées sur la valeur d'une variable.

Par exemple, ma variable pourrait ressembler à ceci:

    {'hometown': 'New York'}

Ou comme ceci:

    {'university': 'USC'}

... Ou même comme ceci:

    [{'hometown': 'New York'}, {'university': 'USC'}]

Pouvez-vous m'aider à écrire une fonction qui prend un dictionnaire (ou une liste de dictionnaires) en entrée, et ensuite de façon dynamique s'appuie le bon sqlalchemy requête?

Si j'essaie d'utiliser une variable pour le mot-clé, j'obtiens cette erreur:

key = 'university'
User.query.filter_by(key='USC').all()

InvalidRequestError: Entity '<class 'User'>' has no property 'key'

Deuxièmement, je ne suis pas sûr de la façon de la chaîne de multiples filter_by ensemble des expressions de manière dynamique.

Je peux explicitement, appeler un filter_by expression, mais comment puis-je enchaîner plusieurs ensemble en fonction d'une variable?

Espère que cela a plus de sens.

Merci!

source d'informationauteur SeanPlusPlus