Boa*_*oaz 7 python sql postgresql sqlalchemy jsonb
我有一个JSONB字段,有时有嵌套键.例:
"a simple text"
如果我这样做,
"a simple text"
我会得到这个记录.
如何搜索嵌套密钥的存在?("a simple text")
van*_*van 13
使用SQLAlchemy,以下内容适用于您的测试字符串:
class TestMetadata(Base):
id = Column(Integer, primary_key=True)
name = Column(String)
metadata_item = Column(JSONB)
Run Code Online (Sandbox Code Playgroud)
根据SQLAlchemy文档JSONB(搜索Path索引操作示例):
expr = TestMetadata.metadata_item[("nested_field", "a simple text")]
q = (session.query(TestMetadata.id, expr.label("deep_value"))
.filter(expr != None)
.all())
Run Code Online (Sandbox Code Playgroud)
应生成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}'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8123 次 |
| 最近记录: |