如何通过Python连接本地Azure CosmosDB模拟器的Table存储?
CosmosDB模拟器Table接口Python连接问题求助
我在Windows 10上用Python 3.6(CPython)运行Azure CosmosDB模拟器,想通过Table接口进行操作。微软提供的azure-cosmosdb-table 1.0.5 SDK连接云端CosmosDB账户完全正常,但就是连不上本地模拟器,折腾了好久都没解决。
环境信息
- 操作系统:Windows 10
- Python版本:3.6(CPython)
- 使用的SDK:azure-cosmosdb-table 1.0.5
我尝试的连接代码
我尝试了各种参数组合,还写了个no_ssl_verification上下文管理器来禁用requests库的SSL验证,代码如下:
import logging from azure.cosmosdb.table import TableService from nossl import no_ssl_verification logging.basicConfig(level=logging.DEBUG) connection = { 'AccountName': 'devstoreaccount1', 'AccountKey': 'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==', 'TableEndpoint': 'https://localhost:8081', } connection_string = ';'.join('{k}={v}'.format(k=k, v=v) for k, v in connection.items()) print(connection_string) with no_ssl_verification(): ts = TableService( endpoint_suffix = "https://localhost:8081", connection_string= connection_string, is_emulated=True) ts.create_table('mytable')
报错信息
运行后一直报400错误,提示请求URL无效:
Bad Request {"code":"BadRequest","message":"Request url is invalid., Microsoft.Azure.Documents.Common/2.2.0.0"}
已做的验证和尝试
- 我没找到模拟器Table接口连接参数的官方文档,账户名和密钥是从模拟器Web界面获取的,其他参数都是自己试出来的;如果缺少这些参数,SDK会直接尝试连接云端服务,肯定失败
- 把
is_emulated设为False时,SDK也会连接远程主机,必须设为True才行,但还是报错 - 用azure-cosmos SDK连接模拟器的SQL/文档接口是成功的,代码如下:
from azure.cosmos.cosmos_client import CosmosClient cc = CosmosClient('https://localhost:8081', auth={'masterKey': 'C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=='}) cc.CreateDatabase({'id': 'mydb'})
这段代码能成功创建数据库,在模拟器的数据资源管理器里也能看到。
有没有大佬能提供CosmosDB模拟器Table接口的正确连接字符串参考?
内容的提问来源于stack exchange,提问作者josteinb
相关产品推荐
相关产品推荐

