使用 MySQL8.0.25 作为数据库后端,我制作 Django ORM 来更新以下 JSONField 值
{
"01-task1": {"data":"huge data here"}
}
只需添加一个新元素,"02-testing": {}
但我得到了以下 sql 日志
(0.000) UPDATE `by_jsontree_store1` SET `store_type` = 1, `user_id` = 2, `data` = '{\"01-task1\": {\"data\": \"huge data here\"}, \"02-testing\": {}}'
WHERE `by_jsontree_store1`.`id` = 1; args=(1, 2, '{"01-task1": {"data": "huge data here"}, "02-testing": {}}', 1)
看起来 Django 重写了那个 JSONField 的全部内容。
Django JSONField 确实映射到 MySQL JSON 列类型,如下表结构所示。
想象如果原始内容很大,比如 100MB,会发生什么。
Django 可以部分更新 JSON 字段,只更新它需要的内容吗?