【问题标题】:Django MySQL Query Json fieldDjango MySQL 查询 Json 字段
【发布时间】:2017-04-25 10:48:09
【问题描述】:

我有一个 MySQL 数据库,其中包含一个名为 things 的 JSON 字段的表。 JSON 看起来像这样

things = {"value1": "phil", "value2": "jill"}

我收集了通过

从数据库中提取的对象
my_things = Name_table.objects.values

现在,我想通过其中一个 JSON 字段过滤 my_things 集合。这个我试过了

我的东西 = my_things.filter(things__contains={'value': 'phil'})

返回一个空集合。我也试过了

my_things = my_things.filter(things={'value': 'phil'})

my_things = my_things.filter(things__exact={'value': 'phil'})

我使用的是 Django 1.10 和 MySQL 5.7 想法?

【问题讨论】:

    标签: mysql django


    【解决方案1】:

    这取决于您在字段中存储 JSON 的方式。如果您使用django-jsonfield,那么您的things 将是不带​​空格的字符串,字符串包含在引号内:'{"value1":"phil","value2":"jill"}'

    然后,通过docs

    my_things = my_things.filter(things__contains='"value1":"phil"')
    

    应该返回你过滤的查询集,因为

    >>> tmp_str = '{"value1":"phil","value2":"jill"}'
    >>> '"value1":"phil"' in tmp_str
    True
    

    【讨论】:

    • 我尝试了您的建议,但它仍然返回一个空集合。数据不是使用 djang-jsonfield 存储的,而是使用 python 的内置 json 库从非 web python 应用程序存储的。
    • 真正奇怪的是 my_things 在我应用过滤器之前包含几个项目,之后包含 0 个项目。
    • 忽略我以前的 cmets - 你的建议奏效了。
    猜你喜欢
    • 2022-10-01
    • 1970-01-01
    • 2020-06-19
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2012-09-10
    • 2012-12-29
    相关资源
    最近更新 更多