05_data_storage_kv.py
"""示例 5:KV 数据存储全流程(单值 / 批量 / 前缀)。
用法:
python 05_data_storage_kv.py
注意:
- key 不能含 "/"(路由 data/{key} 单段匹配,会 404);前缀分隔用 ":",
不要用 "_"/"%"(前缀匹配是 SQL LIKE 通配符)。本示例统一用 "demo:nb:..." 作为 key。
"""
from __future__ import annotations
import json
from _common import make_client
def main() -> None:
svc = make_client()
prefix = "demo:nb:" # ':' 作分隔:前缀查询/删除是 SQL LIKE,'_' 会被当通配符
print(f"[1/6] 单键写入 {prefix}user1")
svc.save_custom_data(f"{prefix}user1", value=json.dumps({"name": "alice", "age": 20}))
print(f"[2/6] 单键读取")
user1 = svc.get_custom_data(f"{prefix}user1")
print(" ->", user1.get("data"))
print(f"[3/6] 批量写入(user2 / user3)")
svc.save_multiple_custom_data([
{"key": f"{prefix}user2", "value": json.dumps({"name": "bob", "age": 30})},
{"key": f"{prefix}user3", "value": json.dumps({"name": "carol", "age": 25})},
])
print(f"[4/6] 列出 prefix 下所有 key")
keys = svc.get_custom_data_keys(prefix=prefix)
print(" ->", keys.get("keys")) # 响应字段是 keys(不是 data)
print(f"[5/6] 删除单个 {prefix}user2")
svc.delete_custom_data(f"{prefix}user2")
print(f"[6/6] 按前缀批量删除")
svc.delete_custom_data(prefix, is_prefix=True)
final_keys = svc.get_custom_data_keys(prefix=prefix).get("keys") or []
print(" 清理后剩余 keys:", final_keys)
if __name__ == "__main__":
main()