SQLAlchemy根据JSONB中的嵌套键进行过滤

前端之家收集整理的这篇文章主要介绍了SQLAlchemy根据JSONB中的嵌套键进行过滤前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 JSONB字段,有时有嵌套键.例:

{“nested_field”:{“另一个URL”:“foo”,“一个简单的文本”:“text”},“first_Metadata”:“plain string”,“another_Metadata”:“foobar”}

如果我做
.filter(TestMetadata.Metadata_item.has_key(nested_field))
我得到了这个记录.

如何搜索嵌套密钥的存在? (“一个简单的文字”)

使用sqlAlchemy,以下内容适用于您的测试字符串:
class TestMetadata(Base):
    id = Column(Integer,primary_key=True)
    name = Column(String)
    Metadata_item = Column(JSONB)

按照SQLAlchemy documentation of JSONB(搜索Path索引操作示例):

expr = TestMetadata.Metadata_item[("nested_field","a simple text")]
q = (session.query(TestMetadata.id,expr.label("deep_value"))
     .filter(expr != None)
     .all())

哪个应生成以下sql

SELECT  testMetadata.id AS testMetadata_id,testMetadata.Metadata_item #> %(Metadata_item_1)s AS deep_value
FROM    testMetadata
WHERE  (testMetadata.Metadata_item #> %(Metadata_item_1)s) IS NOT NULL
-- @params: {'Metadata_item_1': u'{nested_field,a simple text}'}

猜你在找的Postgre SQL相关文章