簡體   English   中英

SQLAlchemy Postgres 查詢是 JSON 中存在的關鍵

[英]SQLAlchemy Postgres query is key exists in JSON

我有一個模型Definition

class Definition:
    meta = Column(MutableDict.as_mutable(JSON))

它存儲任何 JSON,因此我想查詢此字段中是否存在給定的鍵。

我需要類似的東西:

defs = db.query(Definition).filter(
    Definition.meta.has_key('translation')).all()

例如,MySQL 有一個名為json_contains的函數,我可以使用它:

defs = db.query(Definition).filter(
    func.json_contains(
        Definition.meta, 'translation') == 1).all()

我如何在 PostgreSQL 中實現這一點

每當我不確定如何使用 sqlalchemy 位時,我都會一起破解一個版本,然后從那里開始:

json_select = '''SELECT jdoc->'key_name1', jdoc->'translation'
FROM Definition 
WHERE jdoc @> '{"translation": 1, "key_name1": "hello there"}'
;
'''

print([x for x in db.engine.execute(json_select)])

筆記:

psycopg2 在 2.5.4 版中更改:添加了 jsonb 支持。

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM