用python更新mysql json查询

时间:2017-09-22 04:09:41

标签: python mysql sql pymysql

我有一个json字段,假设来自表T1和字段F1 {"X":[{"a":"1","t":"2"},{"a":"2","t":"4"}]} 如果我想更新我的 t = 2到t = 10获取:1 ,该怎么做? 什么是正常的mysql语法?

我试过这样的事情,它只是分别更新t = 10值

UPDATE T1 set F1 = JSON_SET(F1, '{"a":"1","$.t", "10"}') where id = 1; 

尝试使用此..只需将另一个值添加到同一字段,如

{"X":[{"a":"1","t":"2"},{"a":"2","t":"4"}],"t":"10"}

提前致谢..

1 个答案:

答案 0 :(得分:0)

您的path参数错误。您需要索引到X数组才能转到要更改的属性。

UPDATE T1
SET F1 = JSON_SET(F1, '$.X[0].t', '10')
WHERE id = 1

要搜索a = 1并更新相应的t,您可以使用JSON_SEARCH。它返回一个带引号的字符串,因此您必须删除它们。然后,您必须将.a替换为.t以获取您要设置的属性。

UPDATE T1
SET F1 = JSON_SET(F1, REPLACE(REPLACE(JSON_SEARCH(F1, 'one', '1', null, '$**.a'), '"', ''), '.a', '.t'), '10')
WHERE id = 1;