如何用Python读取Cosmos DB容器JSON文件并解决资源找不到错误
解决CosmosResourceNotFoundError及导出修改JSON的方案
错误原因排查
CosmosResourceNotFoundError通常由以下情况引发:
- 数据库/容器名称与Cosmos DB中实际资源不匹配(资源名称区分大小写)
- 账户端点或密钥输入错误
- 当前只读权限未覆盖目标数据库/容器
- 查询条件对应的资源实际不存在
分步解决
1. 核对资源名称
从你提供的Cosmos DB截图确认:数据库名称为DATA,容器名称为TenantInfo,需确保代码中名称完全一致,注意大小写严格匹配。
2. 验证凭证与权限
- 确认端点是Cosmos DB账户的完整URL(格式示例:
https://<账户名>.documents.azure.com:443/) - 确认只读密钥已授予
DATA数据库和TenantInfo容器的读取权限 - 检查密钥是否输入正确,未过期
3. 完整代码(查询+修改+保存JSON)
以下是包含数据查询、修改并导出为JSON文件的可运行代码:
from azure.cosmos import CosmosClient import json # 填入你的Cosmos DB凭证 endpoint = "你的Cosmos DB端点" key = "你的只读密钥" client = CosmosClient(endpoint, key) database_name = "DATA" container_name = "TenantInfo" try: # 获取数据库和容器客户端 database = client.get_database_client(database_name) container = database.get_container_client(container_name) # 执行查询 query = "SELECT * FROM c WHERE c.partitionKey = 'UPITT' and c.id = 'Org.OrgUnit.UPITT'" items = list(container.query_items(query, enable_cross_partition_query=True)) if not items: print("未查询到匹配的数据") else: # 示例:修改数据字段(根据你的需求调整) for item in items: item["last_modified"] = "2024-05-20" # 其他修改逻辑... # 保存为JSON文件 with open("modified_tenant_data.json", "w", encoding="utf-8") as f: json.dump(items, f, indent=4, ensure_ascii=False) print("数据已修改并保存为modified_tenant_data.json") except Exception as e: print(f"错误详情: {str(e)}")
额外建议
- 若查询无结果,可先执行
SELECT TOP 10 * FROM c验证是否能正常读取容器数据 - 跨分区查询依赖容器的索引策略,默认索引策略支持此类查询,无需额外配置
内容的提问来源于stack exchange,提问作者Bhavesh
相关产品推荐
相关产品推荐

