Python 3.x 我们如何获得与数据库中DynamoDB查询结果相同的列序列?
我正在寻找一种获得boto3 DynamoDB查询结果(列)的方法,就像我插入DB的方法一样 我的插入操作:Python 3.x 我们如何获得与数据库中DynamoDB查询结果相同的列序列?,python-3.x,collections,boto3,dynamodb-queries,aws-dynamodb,Python 3.x,Collections,Boto3,Dynamodb Queries,Aws Dynamodb,我正在寻找一种获得boto3 DynamoDB查询结果(列)的方法,就像我插入DB的方法一样 我的插入操作: DYNAMO_CLIENT.put_item( TableName=TABLE_NAME, Item={ "id": {"S": data.id}, "name": {"S": data.name}
DYNAMO_CLIENT.put_item(
TableName=TABLE_NAME,
Item={
"id": {"S": data.id},
"name": {"S": data.name},
"account_id": {"S": data.provider_account_id},
"provider": {"S": data.provider},
"is_enabled" : {'BOOL':data.enabled)}
},
)
我的查询:
response = table.query(
IndexName='provider-id-index',
KeyConditionExpression=Key('provider').eq(provider)
)
for item in response["Items"]:
print(item.values())
{"is_enabled":False, name:"sample","account_id":"12345","id="345","provider":"none"}
{"id="345",name:"sample","account_id":"12345","provider":"none","is_enabled":False}
我得到的输出:
response = table.query(
IndexName='provider-id-index',
KeyConditionExpression=Key('provider').eq(provider)
)
for item in response["Items"]:
print(item.values())
{"is_enabled":False, name:"sample","account_id":"12345","id="345","provider":"none"}
{"id="345",name:"sample","account_id":"12345","provider":"none","is_enabled":False}
期望:
response = table.query(
IndexName='provider-id-index',
KeyConditionExpression=Key('provider').eq(provider)
)
for item in response["Items"]:
print(item.values())
{"is_enabled":False, name:"sample","account_id":"12345","id="345","provider":"none"}
{"id="345",name:"sample","account_id":"12345","provider":"none","is_enabled":False}
我知道response[“Items”]
返回dict
对象列表(无序)。但我正在寻找一种方法来做到这一点
我尝试了collections.OrderdDict(item.values()[0])
,但没有成功
这个问题的任何解决办法都将受到欢迎
谢谢。您无法控制字典中项目的顺序。如果你需要的东西有一定的顺序,你可能应该重新思考为什么会这样。如果顺序对于您无法控制的事情很重要,您可以随时获取结果,并将值放入按您希望的方式排序的新对象中。如果该顺序对于每个项目都是唯一的,则可以将该顺序存储在项目的属性中。一般来说,这不是您应该关心的问题。您是否愿意维护用于插入的密钥列表?如果是这样,可能会使用相同的列表将返回的dict映射到预期的dictsye,我们无法控制dict的顺序,但是有没有方法查询dynamo以返回OrderdDict..?没有。响应只是JSON。它没有订单。