SQLALchemy: запрос одного ключа или подмножества ключей столбца JSONB Postgres - PullRequest
2 голосов
/ 09 июля 2019

У меня есть таблица Postgres, в которой есть столбец JSONB.Как запросить данные этого столбца без загрузки всего столбца одновременно в 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', но не все из них одновременно?Спасибо!

1 Ответ

1 голос
/ 12 июля 2019

Это на самом деле довольно просто, вы просто запрашиваете ключи, которые вас интересуют, как:

query = session.query(MyTable.myjsonb['a'])

Если вам нужно несколько ключей от объекта json, скажем, a и c, вы делаете

query = session.query(MyTable.myjsonb['a'], MyTable.myjsonb['c'])

Если какой-либо из ключей отсутствует, он просто вернет None для этой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...