我正在服务器端实现“补丁”以部分更新我的资源。
假设我没有在 JSON 请求/响应中公开我的 SQL 数据库模式,即 JSON 中的键和表的列之间存在单独的映射,我如何最好地确定在给定 JSON 的情况下在 SQL 中更新哪些列部分更新?
例如,假设我的表有 3 列:col_a
、col_b
和col_c
,并且 JSON 键与表列之间的映射是:a -> col_a, b -> col_b, c -> col_c
。给定JSON-PATCH
数据:
[
{"op": "replace", "path": "/b", "value": "some_new_value"}
]
以编程方式将此部分更新应用于col_b
与我的资源对应的表的最佳方法是什么?
当然,我可以在keys_to_columns
某个地方的 dict 中硬编码这些映射,并且在每次请求时patch_data
,我都可以这样做:
mapped_updates = {keys_to_columns[p['path'].split('/')[-1]]: p['value'] for p in patch_data}
然后用于mapped_updates
构造数据库更新的 SQL 语句。如果上面抛出一个KeyError
我知道请求数据是无效的,可以把它扔掉。我需要为我拥有的每个表/资源执行此操作。
我想知道是否有更好的方法。