我正在使用 CosmosDB noSQL API,但我觉得我做得不对。 container class中的方法全部返回这些 iterator objects ,它只有一个方法:next()。
我需要从容器中获取记录列表,我唯一的想法就是这样做:
def to_list(iterator):
list = []
for i in range(0, 99):
try:
list.append(iterator.next())
except:
break
return list
这可行,但感觉很糟糕。这会成为性能问题吗? Iterator 类实际上包含我的所有数据吗?就像如果我使用返回的迭代器执行上述操作,我是对 cosmos 进行 1 次查询还是 100 次查询?
我找到了this文章使用了 azure.cosmos.cosmos_client 中的方法,但最终仍然会循环遍历所有内容。这是正常的吗,我应该使用 sqlalchemy 还是其他东西来代替?
使用 python 与 CosmosDB 对话的最佳实践是什么?
最佳答案
如果您尝试读取容器中的所有项目,可以使用此方法。
item_list = list(container.read_all_items(max_item_count=10))
这是一个查询。
items = list(container.query_items(
query="SELECT * FROM r WHERE r.name=@name",
parameters=[
{ "name":"@name", "value": "Mark" }
],
enable_cross_partition_query=True
))
关于python - CosmosDB Python获取多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74696523/