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})))