在JSONField中搜索文本

问题描述

我将peeweesqlite一起使用。我的一个模型包含JSONFielddocs link),现在我需要查询该字段包含我的字符串的所有行。

class Market(Model):
    ...
    data = JSONField()
    class Meta:
        database = db

如果我尝试以下代码,则不会返回任何内容

Market.select().where(Market.data.contains(search))

示例数据:

  • Market.data['123','456','789']
  • search456

如何查找Market.data字段包含search文本的所有行?

解决方法

sqlite json1扩展不提供“包含”功能。您可能想使用json_each()json_tree表值函数:

https://sqlite.org/json1.html#examples_using_json_each_and_json_tree _

Sqlite json1扩展文档:

https://sqlite.org/json1.html

Peewee sqlite json1扩展文档:

http://docs.peewee-orm.com/en/latest/peewee/sqlite_ext.html#sqlite-json1