我有一个模型定义
:
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 支持。
引用:
关于python - SQLAlchemy Postgres 查询是 JSON 中存在的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44397358/