mysql - Django MySQL 查询 Json 字段

标签 mysql django

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

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

我有通过

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

现在,我想通过 JSON 字段之一过滤 my_things 集合。我已经尝试过了

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 想法?

最佳答案

这取决于你如何在字段中存储 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

关于mysql - Django MySQL 查询 Json 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43608570/

相关文章:

python - 当客户端连接不稳定时,在 heroku 上运行的 django 中的工作人员卡在岗位上

c++ - libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

MySQL 索引 eq 到 Key?

php - 找到最小值并输出用户名

mySQL - 根据连续差异对值进行分组

Mysql正则表达式问题

具有现有 mysql 数据库的 Django rest 框架 api

django - 如何*不*在syncdb上运行Django代码

Django查询集外键

python - Django 字符串换行