我有一个具有JSONB列的Postgres表。我如何查询此列的数据而不在SQLAlchemy中立即加载整个列?
让我们说JSONB列myjsonb
包含{'a': 1, 'b': 2, 'c': 3, ... 'z': 26}
。我只想要'a'
的值,而不是全部26个值。如何指定查询来做到这一点?
例如,
query = session.query(MyTable).options(defer('myjsonb')).join(MyTable.myjsonb['a'])
不起作用。
有什么主意我只能检索'a'
吗?如果没有密钥'a'
,会发生什么?以及如何加载多个密钥,比如说'b'
到'f'
,但不是一次全部加载?谢谢!
答案 0 :(得分:1)
这实际上很简单,您只需查询感兴趣的键即可,如下所示:
query = session.query(MyTable.myjsonb['a'])
如果您想从json对象中获取多个键,请说a
和c
,
query = session.query(MyTable.myjsonb['a'], MyTable.myjsonb['c'])
如果不存在任何键,它将只为该行返回None
。