Как отфильтровать поле JSONB по подстроке (SQLAlchemy, Postgresql) - PullRequest
0 голосов
/ 18 января 2019

Я бы хотел отфильтровать поле JSONB, содержащее подстроку, используя SQLAlchemy.

Я знаю, что могу использовать функцию contains (), чтобы найти точно такой же ключ, но я хочу найти подстроку этого ключа. Как использование ilike () с текстовыми полями. Я хотел бы сделать это для обоих столбцов, получателя и параметров. Но если я получу помощь по одному, я выясню, как это сделать со вторым столбцом.

class NotificationMixin:

    id = Column(Integer, primary_key=True)
    recipient = Column(JSONB, nullable=False)
    params = Column(JSONB, default={})

class EmailResource(AdminDataTableResource):

    def _apply_filters(self, emails, filters):
        for key in filters.items():
            f_name = key[0]
            f_val = key[1]
            if len(f_val) > 0:

                if f_name == 'recipient':
                    emails = emails.filter(Email.recipient.contains('"' + f_val + '"'))

                if f_name == 'shipment_number':
                    emails = emails.filter(Email.params["shipment_number"].contains('"' + f_val + '"'))

Могу ли я использовать функцию has (), чтобы действовать как-то как ilike ()? Если нет, как я могу отфильтровать подстроку в моем случае? Есть идеи?

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