Py学习  »  DATABASE

在mysql中更新json中key的值

Baljinder Singh • 5 年前 • 1654 次点击  

我在mysql数据库中有一个类似结构的json。

{
  "tagId": "17",
  "label": "Signature",
  "name": "Signature",
  "key": "Signature",
  "placeholder": "Sign Here",
  "type": "printDigital",
  "children": [
   {
     "name": "Signature",
     "key": "Signature",
     "type": "signatureText",
     "label": "Signature",
     "placeholder": "Sign Here"
   },
   {
     "name": "SignerUUID",
     "key": "SignerUUID",
     "type": "userUuid",
     "label": "UUID",
     "placeholder": "UUID"
   }
  ]
}

我想针对下面这样的密钥签名更新子json中name字段的值

{
  "tagId": "17",
  "label": "Signature",
  "name": "Signature",
  "key": "Signature",
  "placeholder": "Sign Here",
  "type": "printDigital",
  "children": [
   {
     "name": "SignHere",
     "key": "Signature",
     "type": "signatureText",
     "label": "Signature",
     "placeholder": "Sign Here"
   },
   {
     "name": "SignerUUID",
     "key": "SignerUUID",
     "type": "userUuid",
     "label": "UUID",
     "placeholder": "UUID"
   }
  ]
}

如何有效地更新上述值?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47624
 
1654 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Nick
Reply   •   1 楼
Nick    6 年前

对于示例数据,可以使用 JSON_SEARCH 找到那个孩子 name Signature ,然后使用 JSON_REPLACE 替换值。像这样的:

UPDATE your_table
SET json_column = JSON_REPLACE(json_column, 
                               JSON_UNQUOTE(JSON_SEARCH(json_column, 'one', 'Signature', NULL, '$.children[*].name')),
                               'SignHere')