首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中将大量数据插入Cosmos DB?

如何在Python中将大量数据插入Cosmos DB?
EN

Stack Overflow用户
提问于 2022-08-03 17:11:14
回答 1查看 621关注 0票数 0

我正在用Python开发一个应用程序,它使用Azure Cosmos DB作为主数据库。在应用程序的某个时候,我需要将大量数据(一批项)插入Cosmos DB中。到目前为止,我一直在使用Azure Cosmos DB Python for SQL API与Cosmos DB通信;但是,它没有提供批量数据插入的方法。

据我所理解,这些是在这个SDK中提供的插入方法,这两种方法都只支持单个项插入,在for循环中使用它时会非常慢:

  • .upsert_item()
  • .create_item()

是否有另一种方法可以使用此SDK插入大容量数据,而不是在for循环中使用上述方法?如果没有,是否有可以处理大容量数据插入的Azure REST?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-03 19:40:40

Cosmos DB服务不通过其REST提供此功能。批量模式是在SDK层实现的,不幸的是,Python还不支持大容量模式。但是,它确实支持异步IO。这里有一个可能对你有帮助的例子。

代码语言:javascript
运行
复制
from azure.cosmos.aio import CosmosClient
import os

URL = os.environ['ACCOUNT_URI']
KEY = os.environ['ACCOUNT_KEY']
DATABASE_NAME = 'myDatabase'
CONTAINER_NAME = 'myContainer'

async def create_products():
    async with CosmosClient(URL, credential=KEY) as client:
        database = client.get_database_client(DATABASE_NAME)
        container = database.get_container_client(CONTAINER_NAME)
        for i in range(10):
            await container.upsert_item({
                'id': 'item{0}'.format(i),
                'productName': 'Widget',
                'productModel': 'Model {0}'.format(i)
            }
        )

更新:我记得另一种方法,您可以在宇宙数据库中为Python做批量插入,即使用存储过程。有关于如何编写这些内容的示例,包括演示传递数组的示例,这正是您想要做的。我还想看看有限度的执行,因为您也希望实现这一点。您可以在这里学习如何编写它们,如何编写存储过程。那么如何在这里注册和呼叫他们,如何使用存储过程。注意:只有在传递分区键值时才能使用,因此只能在逻辑分区中执行批处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73225265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档