PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

SQLAlchemy:memfilter nilai yang disimpan dalam daftar bersarang dari bidang JSONB

JSONB SQLAlchemy jenis memiliki contains() metode untuk @> operator di Postgresql. @> operator digunakan untuk memeriksa apakah nilai kiri berisi entri jalur/nilai JSON kanan di tingkat atas. Dalam kasus Anda

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

Atau dengan python

the_value = 'one'

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

Metode ini mengubah struktur python Anda menjadi string JSON yang sesuai untuk database.

Di Postgresql 12 Anda dapat menggunakan fungsi jalur JSON:

import json

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batasan NOT NULL pada sekumpulan kolom

  2. Menginstal Postgres di windows untuk digunakan dengan Ruby-on-Rails

  3. Menggunakan psql bagaimana cara membuat daftar ekstensi yang diinstal dalam database?

  4. ActiveRecord::StatementInvalid:PG InFailedSqlTransaction

  5. PostgreSQL 12:Menerapkan K-Nearest Neighbor Space Partitioned Generalized Search Tree Indexes