Nehmen wir an, ich habe eine Postgres-Datenbank (9.3) und es gibt eine Tabelle namens Resources
. In der Resources
Tabelle habe ich die Felder id
das ist ein int und data
das ist ein JSON-Typ.Python SQLAlchemy und Postgres - Wie man ein JSON-Element abfragt
Nehmen wir an, ich habe die folgenden Datensätze in der Tabelle.
- 1, { 'Vorname': 'Dave', 'name': 'Gallant'}
- 2, { 'Vorname': 'John', 'name': 'Doe'}
Was ich tun möchte, ist eine Abfrage schreiben, die so etwas wie dies alle Datensätze, in denen der Datenspalt hat ein json Element mit dem Nachnamen gleich „Doe“
ich habe versucht zu schreiben zurückkehren würden:
records = db_session.query(Resource).filter(Resources.data->>'lastname' == "Doe").all()
Pycharm jedoch gibt mir einen Kompilierfehler auf der "- >>"
Weiß jemand, wie ich die Filterklausel schreiben würde, um zu tun, was ich brauche?
Versuchen 'astext' wie: ein.' ... Filter (Resources.c.data [ "name"] ASTEXT == " Doe "). All()" und sehen, ob es funktioniert – Anzel
Das scheint zu funktionieren, obwohl ich die ".c" entfernen musste und gehen Sie einfach "Resources.data" direkt. Vielen Dank! –
Ah ... ja, ich gehe normalerweise mit '.c' für Spaltennamen ... froh, dass Sie es gelöst haben. Ich werde oben als Antwort dann posten :-) – Anzel