sql >> Database >  >> RDS >> PostgreSQL

SQLAlchemy:filteren op waarden die zijn opgeslagen in de geneste lijst van het JSONB-veld

SQLAlchemy's JSONB type heeft de contains() methode voor de @> operator in Postgresql. De @> operator wordt gebruikt om te controleren of de linkerwaarde de juiste JSON-pad/waarde-items op het hoogste niveau bevat. In jouw geval

data @> '{"nested_list": [{"nested_key": "one"}]}'::jsonb

Of in python

the_value = 'one'

Session().query(Item).filter(Item.data.contains(
    {'nested_list': [{'nested_key': the_value}]}
))

De methode converteert je python-structuur naar een geschikte JSON-string voor de database.

In Postgresql 12 kunt u de JSON-padfuncties gebruiken:

import json

Session().query(Item).\
    filter(func.jsonb_path_exists(
        Item.data,
        '$.nested_list[*].nested_key ? (@ == $val)',
        json.dumps({"val": the_value})))



  1. Hoe de LTRIM()-functie werkt in MySQL

  2. BULK INSERT met identiteit (auto-increment) kolom

  3. PostgreSQL:hoe geef ik parameters door vanaf de opdrachtregel?

  4. SQL Server 2014:Native back-upversleuteling