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

SQLAlchemy根据JSONB中的嵌套键进行过滤,第1张

概述我有一个 JSONB字段,有时有嵌套键.例: {“nested_field”:{“另一个URL”:“foo”,“一个简单的文本”:“text”},“first_metadata”:“plain string”,“another_metadata”:“foobar”} 如果我做 .filter(TestMetadata.metadata_item.has_key(nested_field)) 我得到 我有一个 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_valueFROM    testMetadataWHERE  (testMetadata.Metadata_item #> %(Metadata_item_1)s) IS NOT NulL-- @params: {'Metadata_item_1': u'{nested_fIEld,a simple text}'}
总结

以上是内存溢出为你收集整理的SQLAlchemy根据JSONB中的嵌套键进行过滤全部内容,希望文章能够帮你解决SQLAlchemy根据JSONB中的嵌套键进行过滤所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1164265.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存