読者の注意: このデータは、最初は XML から取得されます。xml を直接 mysql データベースに取得する簡単な方法があれば教えてください。
API から取得した戻り値に基づいて、順序付けされた dict を介して for ループを実行しようとしています。レスポンスデータは大まかに以下のようになります(xmlから変換後)
OrderedDict([('@name', 'namex'),
('type', OrderedDict([('member', ['aaa', 'bbb'])])),
('location', OrderedDict([('member', 'ccc')])),
('currency', OrderedDict([('member', 'ddd')])),
('10-k', OrderedDict([('member', 'eee')])),
('market-cap', OrderedDict([('member', 'fff')])),
('revenue', OrderedDict([('member', 'ggg')])),
('sector', OrderedDict([('member', 'www')])),
('risk', OrderedDict([('member', 'xxx')])),
('leverage', OrderedDict([('member', 'yyy')])),
('financials', OrderedDict([('group', OrderedDict([('member', 'zzz')]))])),
これにより、左側の各項目が列ヘッダーであり、blob 全体が単一の行である for ループを満足させ、これを実行することが困難になりました。
sed/awk を使用してテキストを無視/削除/編集し、試行錯誤する正規表現で何かをしようとする必要がありますか?
次のステップの推奨事項を探しています。より単純な順序付けられた辞書で、for ループは成功しましたが、API はより適切に応答しました
OrderedDict([('aaa', 'bbb'), ('ccc', 'ddd'), ('eee', 'fff'), ('hhh', 'iii')])
https://www.python-course.eu/sql_python.phpを使用して学習しようとしていますが、このような状況はありません。誰かが私の学習のためのより良い情報源を持っているかどうか教えてください!
私のforループは次のようになります
for id, a in enumerate(data_response):
format_str = """INSERT INTO asdf (id, name, type, location, currency, 10-k, market-cap , revenux, sector, risk, leverage, financials) VALUES ({id}, '{name}', '{type}', '{location}', '{currency}', '{10-k}', '{market-cap }', '{revenux}', '{sector}', '{risk}', '{leverage}', '{financials}');"""
insert_a = format_str.format(id=id, name=a, type=data_response[a], location=data_response[a], currency=data_response[a], 10-k=data_response[a], market-cap=data_response[a], revenux=data_response[a], sector=data_response[a], risk=data_response[a], leverage=data_response[a], financials=data_response[a])
print(insert_a)
私の期待される結果
INSERT INTO asdf (id, name, type, location, currency, 10-k, market-cap, revenuw, sector, risk, leverage, financials) VALUES (x, 'namex', 'aaa', '(bbb, ccc)', 'ddd', 'eee', 'fff', 'ggg', 'www', 'xxx', 'yyy', 'zzz' )
「名前」の順序付けられた辞書を反復処理してから、名前の各部分の下にある詳細を反復処理し、その 1 つのループを検討できるようにする必要があります。