Azure cosmosdb Cosmos SQL数据库创建项

Azure cosmosdb Cosmos SQL数据库创建项,azure-cosmosdb,azure-cosmosdb-sqlapi,azure-sdk-python,Azure Cosmosdb,Azure Cosmosdb Sqlapi,Azure Sdk Python,我对cosmos SQL db python sdk有一个问题,我不知道如何解决它 我有一个数据浏览器,里面有一些数据。我正在使用python sdk查询这些数据,并将输出保存在json文件中。到目前为止一切正常。但是我想把它带到下一步,而不是将这个查询结果保存到一个json文件中,我想将这个查询结果直接传递到一个cosmosdb进行存储 这是主要的问题 我遵循了关于蔚蓝宇宙的指南。连接到我的cosmosdb,我可以使用python进行连接 然后我使用了这段代码: ###############

我对cosmos SQL db python sdk有一个问题,我不知道如何解决它

我有一个数据浏览器,里面有一些数据。我正在使用python sdk查询这些数据,并将输出保存在json文件中。到目前为止一切正常。但是我想把它带到下一步,而不是将这个查询结果保存到一个json文件中,我想将这个
查询结果
直接传递到一个cosmosdb进行存储

这是主要的问题

我遵循了关于蔚蓝宇宙的指南。连接到我的cosmosdb,我可以使用python进行连接

然后我使用了这段代码:

######################################################
##                   COSMOS-DB                      ##
######################################################

url = "<my-url>"
key = "my-key"
client = CosmosClient(url, key)
database_name = "My-Database"
container_name = "Table"
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)
data = json.dumps(str(df))
data_dict = json.loads(data)
print(data_dict)
container.create_item(body=str(data_dict))
我完全迷失在这一点上,我不知道如何解决这个问题

更新: 这是我试图传递给宇宙的数据:

[
  {
    "_timestamp": 1622036400000,
    "name": "User Log Off",
    "message": "message",
    "userID": "userID",
    "Events": "SignOff event",
    "event_count": 1
  },
  {
    "_timestamp": 1622035800000,
    "name": "User Log Off",
    "message": "message",
    "userID": "userID",
    "Events": "SignOff event",
    "event_count": 1
  }
]
这只是整个阵列的两个样本,大约有300个

我修正了之前的错误

现在我有了一个正确的json文件被转储。 它看起来像之前发布的。我运行了
容器。创建\u项(项)
但出现以下错误:

Traceback (most recent call last):
  File "query.py", line 72, in <module>
    container.create_item(body=data_dict)
  File "/Users/user/opt/anaconda3/lib/python3.8/site-packages/azure/core/tracing/decorator.py", line 83, in wrapper_use_tracer
    return func(*args, **kwargs)
  File "/Users/user/opt/anaconda3/lib/python3.8/site-packages/azure/cosmos/container.py", line 511, in create_item
    result = self.client_connection.CreateItem(
  File "/Users/user/opt/anaconda3/lib/python3.8/site-packages/azure/cosmos/_cosmos_client_connection.py", line 1084, in CreateItem
    options = self._AddPartitionKey(database_or_container_link, document, options)
  File "/Users/user/opt/anaconda3/lib/python3.8/site-packages/azure/cosmos/_cosmos_client_connection.py", line 2512, in _AddPartitionKey
    partitionKeyValue = self._ExtractPartitionKey(partitionKeyDefinition, document)
  File "/Users/user/opt/anaconda3/lib/python3.8/site-packages/azure/cosmos/_cosmos_client_connection.py", line 2526, in _ExtractPartitionKey
    return self._retrieve_partition_key(partition_key_parts, document, is_system_key)
  File "/Users/user/opt/anaconda3/lib/python3.8/site-packages/azure/cosmos/_cosmos_client_connection.py", line 2539, in _retrieve_partition_key
    partitionKey = partitionKey.get(part)
AttributeError: 'str' object has no attribute 'get'

azure.cosmos.exceptions.CosmosHttpResponseError: (BadRequest) Message: {"Errors":["The input content is invalid because the required properties - 'id; ' - are missing"]}


我相信cosmos会自动添加
id

考虑到您的
数据是一个项目数组,您需要做的是循环此数组并分别保存每个项目

请尝试以下代码:

import uuid

url = "<my-url>"
key = "my-key"
client = CosmosClient(url, key)
database_name = "My-Database"
container_name = "Table"
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)
data = json.dumps(str(df))
data_dict = json.loads(data)
print(data_dict)
#Loop through each item in your "data_dict" array.
for item in data_dict:
    #Assign id to the item
    item['id'] = str(uuid.uuid4())
    print(item)
    container.create_item(body=item)
导入uuid
url=“”
key=“我的钥匙”
客户端=CosmosClient(url,键)
数据库\u name=“我的数据库”
容器名称=“表格”
database=client.get\u database\u client(数据库名称)
容器=数据库。获取容器客户端(容器名称)
data=json.dumps(str(df))
data_dict=json.load(数据)
打印(数据记录)
#循环浏览“数据目录”数组中的每个项目。
对于数据目录中的项目:
#为项目分配id
项['id']=str(uuid.uuid4())
打印(项目)
container.create_项(body=item)

你能编辑你的问题并提供你的输入数据吗?@GauravMantri我更新了我的帖子,非常感谢你的时间,这就是传递给
创建项目的方法吗?或者换句话说,你的
data\u dict
是一个数组吗?另外,你创建的容器的分区键是什么?你要做的是循环遍历数组中的每个项(
data\u dict
),并分别保存每个项。你是一个绝对的传奇伴侣。非常感谢你。它确实有效。你太棒了。谢谢谢谢谢谢我很高兴听到你做得很好:)。