亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 如何解析 Amazon RDS 數據服務的輸出

Python 如何解析 Amazon RDS 數據服務的輸出

鳳凰求蠱 2022-12-20 12:09:19
我正在努力使用 Amazon RDS 數據服務https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html解析 ExecuteStatement 操作的輸出文檔很差,我找不到任何有意義的例子。我正在使用 Aurora MySql 數據庫輸出是這樣返回的。這個例子是 SELECT 語句返回的 2 行數據,我用單詞“數據”替換了實際數據 {'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”。根據文檔,“記錄”是 Type: Array of Field 對象數組,這就是我卡住的地方。如何從字典中的數組數組中提取 Field 對象?
查看完整描述

2 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

方法有很多,但最基本的 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']]



查看完整回答
反對 回復 2022-12-20
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

你得到這個


response = 

{'ResponseMetadata': {'HTTPHeaders': {'content-length': '809',

                                      'content-type': 'application/json',

                                      'date': 'Tue, 02 Jun 2020 05:39:22 GMT',

                                      'x-amzn-requestid': '955a6aee-5bad-4f87-a455-b83a10a8a31b'},

                      'HTTPStatusCode': 200,

                      'RequestId': '955a6aee-5bad-4f87-a455-b83a10a8a31b',

                      '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'}]]}

您可以通過迭代讀取您的行response['records']


data_fields = []

for row in response['records']:

    for field in row:

        if field['stringValue']:

           print(field)

           data_fields.append(field)

        elif field['longValue']:

           print(field)

           data_fields.append(field)

考慮通過 mysql 連接配置直接訪問數據庫來使用字典游標,這樣您就不會看到 aws 請求元數據。


import mysql.connector


cnx = mysql.connector.connect(user='username', password='password',

                              host='aws rds mysql host',

                              database='database_name')

cnx.close()

您可以從 AWS 控制臺查看 mysql 連接詳細信息。


https://dev.mysql.com/doc/connector-python/en/connector-python-example-connecting.html


查看完整回答
反對 回復 2022-12-20
  • 2 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號