当前位置: 首页 > news >正文

河北高端网站定制公司如何搭建网站平台

河北高端网站定制公司,如何搭建网站平台,jsp做的网站带数据库,资阳优化团队平台MySQL更新JSON字段key:value形式 1. 介绍 ‌MySQL的JSON数据类型‌是MySQL 5.7及以上版本中引入的一种数据类型,用于存储JSON格式的数据。使用JSON数据类型可以自动校验文档是否满足JSON格式的要求,优化存储格式,并允许快速访问文档中的特定…

MySQL更新JSON字段key:value形式

1. 介绍

‌MySQL的JSON数据类型‌是MySQL 5.7及以上版本中引入的一种数据类型,用于存储JSON格式的数据。使用JSON数据类型可以自动校验文档是否满足JSON格式的要求,优化存储格式,并允许快速访问文档中的特定元素,而无需读取整个文档

2. 针对key:value形式

初始场景:MySQL的JSON字段存储的数据形式

[{"code": "test","value": "暂无"}

调用方法会获取到执行的value的值,依据code,如果存在进行更新,不存在进行添加。

update_sql = f"""UPDATE {table_name}SET props = CASEWHEN JSON_SEARCH(props, 'one', :code, NULL, '$[*].code') IS NOT NULL THENJSON_SET(props,REPLACE(JSON_UNQUOTE(JSON_SEARCH(props, 'one', :code, NULL, '$[*].code')), '.code', '.value'),:result)ELSEJSON_ARRAY_APPEND(IFNULL(props, JSON_ARRAY()), '$', JSON_OBJECT('code', :code, 'value', :result))END,updated_at = NOW()WHERE id = :id"""# 执行 SQL 更新session_new.execute(text(update_sql), {'code': code,'result': result,'id': id})

进阶场景:MySQL的JSON字段存储的数据形式

[{"code": "test2","value": "暂无","update_time": "2024-11-28 19:13:12"}
]

获取的不再是单个value的值,而是一个dict,示例:

{"code": "test2","value": "暂无数据","test_id": 2,"all_test_id": 2,"aaaa": "12","update_time": "2023-12-23 00:00:00"
}

依据code,如果存在进行更新,不存在进行添加,只是这次执行需要更新多个key:value形式数据。
示例,可执行sql:

UPDATE intention_extended_datas
SET props = CASEWHEN JSON_SEARCH(props, 'one', 'test2', NULL, '$[*].code') IS NOT NULL THENJSON_SET(JSON_SET(JSON_SET(JSON_SET(JSON_SET(props,REPLACE(JSON_UNQUOTE(JSON_SEARCH(props, 'one', 'test2', NULL, '$[*].code')), '.code', '.value'),'暂无'),REPLACE(JSON_UNQUOTE(JSON_SEARCH(props, 'one', 'test2', NULL, '$[*].code')), '.code', '.test_id'),2),REPLACE(JSON_UNQUOTE(JSON_SEARCH(props, 'one', 'test2', NULL, '$[*].code')), '.code', '.all_test_id'),3),REPLACE(JSON_UNQUOTE(JSON_SEARCH(props, 'one', 'test2', NULL, '$[*].code')), '.code', '.aaa'),'226'),REPLACE(JSON_UNQUOTE(JSON_SEARCH(props, 'one', 'test2', NULL, '$[*].code')), '.code', '.update_time'),'2023-12-26 00:00:00')ELSEJSON_ARRAY_APPEND(IFNULL(props, JSON_ARRAY()), '$', JSON_OBJECT('code', 'test2', 'value', '暂无数据', 'test_id', 1,'all_test_id', 2, 'aaa', '223','update_time', '2023-12-23 00:00:00'))END,updated_at = NOW()
WHERE id = 1;

python代码如何实现这样的可执行sql,ressult是dict格式:

    def generate_update_sql(self, table_name, result) -> str:# 构建 SET 部分的 SQLset_sql_parts = []# 构建 WHEN 子句when_clause = f"""WHEN JSON_SEARCH(props, 'one', :code, NULL, '$[*].code') IS NOT NULL THEN{self.construct_json_set_query(result)}"""set_sql_parts.append(when_clause)# 构建 ELSE 子句,添加新的元素到 JSON 数组else_clause = f"""ELSEJSON_ARRAY_APPEND(IFNULL(props, JSON_ARRAY()),'$',JSON_OBJECT('code', :code,{', '.join([f"'{key}', :{key}" for key in result.keys()])}))"""set_sql_parts.append(else_clause)# 构建更新语句set_sql = f"""UPDATE {table_name}SET props = CASE{" ".join(set_sql_parts)}END,updated_at = NOW()WHERE id = :id;"""return set_sql@staticmethoddef construct_json_set_query(dynamic_data: dict) -> str:"""根据传入的动态字典,构造 JSON_SET 的嵌套语句。:param dynamic_data: 动态字典,键为路径后缀,值为占位符。示例:{"value": ":value", "test_id": ":test_id"}:return: 返回生成的 SQL JSON_SET 嵌套语句。"""if not dynamic_data:return "props"  # 如果没有键值对,直接返回基础结构base_path = "REPLACE(JSON_UNQUOTE(JSON_SEARCH(props, 'one', :code, NULL, '$[*].code')), '.code', '{}')"json_set_template = "JSON_SET({}, {}, {})"# 构造嵌套 JSON_SET 语句nested_set = "props"for key, placeholder in dynamic_data.items():replace_path = base_path.format(f".{key}")  # 替换路径nested_set = json_set_template.format(nested_set, replace_path, f':{key}')return nested_set

外部调用

# 如果是 JSON 字段,需要检查是否存在,并进行更新或追加update_sql = self.generate_update_sql(table_name, result)# 格式化 SQLformatted_sql = sqlparse.format(update_sql, reindent=True, keyword_case='upper')# 执行 SQL 更新,将 result 中的所有键值对与 code 和 id 一起传递session_new.execute(text(formatted_sql), {'code': code,'id': id,**result})
http://www.hrbkazy.com/news/43789.html

相关文章:

  • 程序员做博彩类的网站犯法吗seo是啥软件
  • 如何做ppt的模板下载网站b站在哪付费推广
  • 小程序商城开发费用北京首页关键词优化
  • 个人做搜索引擎网站违法吗网站推广与优化平台
  • 厦门服装企业网站推广茂名网络推广
  • 成都白帽优化奇零seo赚钱培训
  • 广州建网站的网络公司seo优化教程自学网
  • 网站开发前景知乎百度网站管理员工具
  • 东莞网站建设 信科网络石家庄最新新闻事件
  • 建设网站后期人员薪酬每天新闻早知道
  • 宝鸡专业做网站世界足球排名前100
  • 专业网站推广的公司哪家好seo检查工具
  • 做中医考研真题的网站徐州seo公司
  • 北京微信网站建设公司网站优化公司收费
  • 丹阳高铁站对面的规划网站推广优化网址
  • ssc彩网站开发seo自动优化软件安卓
  • 网站群建设 公司网站哪里买外链
  • 电子商务网站开发电商产品推广方案
  • 商务局网站建设方案网络营销渠道名词解释
  • 备案的域名可以做盗版电影网站吗青岛seo全网营销
  • 如何找网站制作百度一下官网首页下载
  • 如何利用站群做网站网站免费软件
  • 网站进不去怎么解决考研培训机构排名前五的机构
  • 云南省第一人民医院百度seo综合查询
  • wordpress蜘蛛记录插件抖音优化是什么意思
  • 长沙公司做网站大概多少钱seo的工作原理
  • 网站改版的几个建议郑州网站营销推广
  • 做思维导图的网站网络服务费计入什么科目
  • 昆明做网站优化价格长春百度网站优化
  • 网站建设云浪科技免费推广方法