如何通过子字符串过滤JSONB字段(SQLAlchemy,Postgresql)

时间:2019-01-18 09:42:22

标签: python json postgresql filter sqlalchemy

我想使用SQLAlchemy过滤包含子字符串的JSONB字段。

我知道我可以使用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 + '"'))

我可以使用contains()以某种方式像ilike()一样吗?如果没有,我该如何过滤子字符串?有什么想法吗?

0 个答案:

没有答案