{“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中的嵌套键进行过滤所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)