Azure cosmosdb CosmosDB SDK python odata.error InvalidInput

Azure cosmosdb CosmosDB SDK python odata.error InvalidInput,azure-cosmosdb,azure-data-explorer,azure-sdk-python,Azure Cosmosdb,Azure Data Explorer,Azure Sdk Python,我在cosmosDB中有一个表,我想在其中存储来自azure数据资源管理器的一些查询 在data explorer(使用python sdk)中,我运行一个查询来过滤和聚合我的数据,我想将这个查询结果推送到一个cosmosDB中 我确实设置了所有的配置和连接,但是当我运行命令under\u item或create\u item 我得到以下错误: azure.cosmos.exceptions.CosmosHttpResponseError: Status code: 400 {"oda

我在cosmosDB中有一个表,我想在其中存储来自azure数据资源管理器的一些查询

在data explorer(使用python sdk)中,我运行一个查询来过滤和聚合我的数据,我想将这个查询结果推送到一个cosmosDB中

我确实设置了所有的配置和连接,但是当我运行命令
under\u item
create\u item

我得到以下错误:

azure.cosmos.exceptions.CosmosHttpResponseError: Status code: 400
{"odata.error":{"code":"InvalidInput","message":{"lang":"en-us","value":"Request url is invalid.\r\nActivityId: d8994113-504e-4198-9976-41316aaafb5f, documentdb-dotnet-sdk/2.11.0 Host/64-bit MicrosoftWindowsNT/6.2.9200.0\nRequestID:d8994113-504e-4198-9976-41316aaafb5f\n"}}}

我是这样配置azure cosmos的:

url = "url"
key = {"masterkey": "my-key"}
client = CosmosClient(url,key)
database_name = "database"
container_name = "table"
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)

for i in df:
    container.upsert_item(i)
df
是我从azure data explorer查询的结果

我认为错误是由于我如何将查询主体传递给
upsert\u项

有什么建议吗

更新: 所以我试着跟随样本。我将cosmosdb更新为sql API

我当前的代码如下所示:

url = "url"
key = {"masterkey": "my-key"}
client = CosmosClient(url,key)
database_name = "database"
container_name = "table"
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)
data = json.dumps(test)
data_dict = json.loads(data)
for i in data_dict:
    container.create_item(body=i)
我将数据帧转换为json。但是,当我为运行
时,会出现以下错误:

AttributeError:'str'对象没有属性'get'


我不知道我做错了什么

谢谢你的回复,我想我们需要更多关于调试的联系

这是我的代码,它运行良好

from azure.cosmos import exceptions, CosmosClient, PartitionKey,ProxyConfiguration
import family

# Initialize the Cosmos client
endpoint = "https://cosmosdb_name.documents.azure.com:443/"
key = 'primary_key_in_keys_blade'

client = CosmosClient(endpoint, key)
database_name = 'AzureSampleFamilyDatabase'
database = client.create_database_if_not_exists(id=database_name)
# </create_database_if_not_exists>

# <create_container_if_not_exists>
container_name = 'FamilyContainer'
container = database.create_container_if_not_exists(
    id=container_name, 
    partition_key=PartitionKey(path="/lastName"),
    offer_throughput=400
)

family_items_to_create = [
    {
        "id":"112233",
        "name":"andersen"
    },
    {
        "id":"455646",
        "name":"johnson"
    },
    {
        "id":"999999",
        "name":"smith"
    }
]
 # <create_item>
for family_item in family_items_to_create:
    container.upsert_item(body=family_item)
来自azure.cosmos导入异常、CosmosClient、PartitionKey、ProxyConfiguration
导入族
#初始化Cosmos客户端
端点=”https://cosmosdb_name.documents.azure.com:443/"
键='primary_key_in_keys_blade'
客户端=CosmosClient(端点,键)
数据库名称='AzureSampleFamilyDatabase'
数据库=客户端。如果不存在数据库,则创建数据库(id=数据库名称)
# 
# 
容器名称='FamilyContainer'
容器=数据库。如果不存在,则创建容器(
id=容器名称,
partition\u key=PartitionKey(path=“/lastName”),
提供的吞吐量=400
)
要创建的族项目=[
{
“id”:“112233”,
“名称”:“安徒生”
},
{
“id”:“455646”,
“姓名”:“约翰逊”
},
{
“id”:“999999”,
“姓名”:“史密斯”
}
]
# 
对于要创建的族项目中的族项目:
container.upsert\u项目(body=family\u项目)

根据您的错误,我认为您需要检查
data\u dict
的数据格式,或者您可以使用我的示例数据进行测试,以排除其他问题。在我的位置上,我不知道为什么要在这里使用
json.loads()

我认为'df'是一个数据帧,对吗?我相信这个问题与Azure Data Explorer无关。请确保您可以先将任意数据帧插入CosmosDB。@VladikBranevich非常感谢您的时间和回复。是的,
df
来自一个数据帧,我认为默认情况下它是一个json。在将数据传递到upsert_项之前,有没有关于如何将数据转换为json的建议?下面是cosmosdb python sdk的一个示例,我已经将您的代码与之进行了比较,差别确实很大。在示例代码中确实有一个json对象。因此,我认为您最好添加有关如何获取df的详细信息,以便我们了解问题。@TinyWang我刚刚用新的更新更新了我的主题。顺便说一句,我在您的另一个问题中尝试了示例数据,即使我没有设置id属性,我仍然可以成功创建项目,并且在插入时id将自动生成。