Python SQLAlchemy et Postgres - Comment interroger un élément JSON

Disons que j'ai une base de données Postgres (9.3) et il y a une table appelée Resources. Dans le Resources table, j'ai les champs id qui est un int et data qui est un type JSON.

Disons que j'ai les enregistrements suivants dans le tableau.

  • 1, {"prenom":'Dave', 'nom':'Galant'}
  • 2, {"prenom":'John', 'nom':'Doe'}

Ce que je veux faire est d'écrire une requête qui retourne tous les enregistrements pour lesquels les données de la colonne a un json avec le nom égal à "Doe"

J'ai essayé d'écrire quelque chose comme ceci:

records = db_session.query(Resource).filter(Resources.data->>'lastname' == "Doe").all()

Pycharm cependant me donne une erreur de compilation sur le "->>"

Personne ne sait comment j'aurais pu écrire la clause de filtre pour faire ce dont j'ai besoin?

  • Essayez d'utiliser astext comme: ...filter(Resources.c.data["lastname"].astext == "Doe").all() et voir si cela fonctionne
  • Qui semble fonctionner, même si j'ai dû enlever le ".c" just go "des Ressources.les données" directement. Merci!
  • Ah... oui, j'ai l'habitude d'aller avec .c pour le nom de la colonne... heureux que vous l'avez résolu. Je vais poster ci-dessus comme une réponse alors 🙂
InformationsquelleAutor Dave Gallant | 2015-04-30