Можно ли искать в списке JSONB значение, используя "LIKE" и SqlAlchemy? - PullRequest
0 голосов
/ 29 июня 2019

Например, если у меня есть столбец JSONB, и он хранится как:

["oranges","apples","bananas"]

Как я могу проверить, используя поиск типа LIKE, если подстрока "app"в списке?

В идеале я хотел бы иметь возможность сделать что-то вроде:

Basket['fruits'].contains_like('%app%')

Это возможно с sqlalchemy?

1 Ответ

0 голосов
/ 29 июня 2019

Используя вдохновение из чистого ответа PostgreSQL здесь , вы можете создать следующее условие:

from sqlalchemy import exists, func, literal_column

exists().select_from(
  func.jsonb_array_elements_text(Basket['fruits']).alias('fruit')
).where(literal_column('fruit').like('%app%'))

Ответ поднимает вопрос производительности и потенциального добавления индекса в особых случаях (когда вас интересуют только строки, начинающиеся с определенного значения). Посмотрите, относится ли это к вам и возникают ли у вас проблемы с производительностью

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