PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

SQLAlchemy:JSONB फ़ील्ड की नेस्टेड सूची में संग्रहीत मानों पर फ़िल्टर करना

SQLAlchemy का JSONB प्रकार में contains() . है @> . के लिए विधि Postgresql में ऑपरेटर। @> ऑपरेटर का उपयोग यह जांचने के लिए किया जाता है कि बाएं मान में शीर्ष स्तर पर सही JSON पथ/मान प्रविष्टियां हैं या नहीं। आपके मामले में

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

या अजगर में

the_value = 'one'

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

यह विधि आपकी पायथन संरचना को डेटाबेस के लिए उपयुक्त JSON स्ट्रिंग में बदल देती है।

Postgresql 12 में आप 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. PostgreSQL में Arrays की तुलना कैसे करें

  2. प्राथमिक कुंजी को पूर्णांक से सीरियल में कैसे बदलें?

  3. PgAdmin का उपयोग करके Postgresql तालिका डेटा निर्यात करें

  4. ClusterControl - उन्नत बैकअप प्रबंधन - PostgreSQL

  5. SQL, OID को पोस्टग्रेज करता है, वे क्या हैं और वे क्यों उपयोगी हैं?