首页 > 解决方案 > Python 如何解析 Amazon RDS 数据服务的输出

问题描述

我正在努力使用 Amazon RDS 数据服务https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html解析 ExecuteStatement 操作的输出

文档很差,我找不到任何有意义的例子。

我正在使用 Aurora MySql 数据库

输出是这样返回的。此示例是 SELECT 语句返回的 2 行数据,我已将实际数据替换为单词“data”

 {'ResponseMetadata': {'RequestId': '955a6aee-5bad-4f87-a455-b83a10a8a31b', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '955a6aee-5bad-4f87-a455-b83a10a8a31b', 'content-type': 'application/json', 'content-length': '809', 'date': 'Tue, 02 Jun 2020 05:39:22 GMT'}, 'RetryAttempts': 0}, 'numberOfRecordsUpdated': 0, 'records': [[{'stringValue': 'data'}, {'longValue': data}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': ''}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}], [{'stringValue': 'data'}, {'longValue': data}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': ''}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}, {'stringValue': 'data'}]]}

我实际上只需要提取这些数据字段,因此我可以将它们用于另一个表中的 INSERT 语句。

根据文档,原始响应是字典数据类型,所以我在这里得到 3 个键“ResponseMetadata”、“numberOfRecordsUpdated”和“records”。根据文档,“记录”是类型:字段对象数组的数组,这就是我坚持的地方。如何从字典中的数组数组中提取字段对象?

标签: pythonmysqlamazon-web-servicesaws-rds-data-service

解决方案


有很多方法,但是python中最基本的嵌套for循环就足够了:

data_values = []

for record in result['records']:
    print()
    row_data = []
    for data_dict in record:
        #print(data_dict)
        for data_type, data_value in data_dict.items():
            print(data_type, data_value)
            row_data.append(data_value)

    data_values.append(row_data)

print(data_values)  

该代码可以为修改以适应您的需要奠定良好的基础。它产生以下内容:

stringValue data
longValue data
stringValue data
stringValue data
stringValue 
stringValue data
stringValue data
stringValue data
stringValue data
stringValue data
stringValue data
stringValue data
stringValue data

stringValue data
longValue data
stringValue data
stringValue data
stringValue 
stringValue data
stringValue data
stringValue data
stringValue data
stringValue data
stringValue data
stringValue data
stringValue data

并且data_values

[['data', 'data', 'data', 'data', '', 'data', 'data', 'data', 'data', 'data', 'data', 'data', 'data'], ['data', 'data', 'data', 'data', '', 'data', 'data', 'data', 'data', 'data', 'data', 'data', 'data']]

推荐阅读