2017-12-10 33 views
0

.jsonリストを繰り返し処理しようとしています。私は 'data'のこれらの3つのサブリストのそれぞれについて、SQLite3で別々のエントリを作成したいと思います。.JSON辞書をループし、SQLite3経由でアイテムを挿入する

data = {u'symbols':[{u'optionType': None, u'dividendDate': u'2017-12-29T00:00:00.000000-05:00', u'eps': 2.79, u'currency': u'CAD', u'prevDayClosePrice': 32.41, u'averageVol3Months': 579272, u'industrySubgroup': u'InsuranceLife', u'isTradable': True, u'hasOptions': True, u'optionDurationType': None, u'optionExpiryDate': None, u'symbolId': 32304, u'outstandingShares': 415289000, u'tradeUnit': 1, u'optionStrikePrice': None, u'pe': 11.62, u'lowPrice52': 28.4, u'industrySector': u'FinancialServices', u'optionRoot': u'', u'description': u'POWER CORP OF CDA SV', u'symbol': u'POW.TO', u'securityType': u'Stock', u'dividend': 0.3585, u'minTicks': [{u'pivot': 0, u'minTick': 0.005}, {u'pivot': 0.5, u'minTick': 0.01}], u'averageVol20Days': 506545, u'industryGroup': u'InsuranceLife', u'optionContractDeliverables': {u'cashInLieu': 0, u'underlyings': []}, u'highPrice52': 33.69, u'yield': 4.43, u'listingExchange': u'TSX', u'isQuotable': True, u'optionExerciseType': None, u'marketCap': 13459516489, u'exDate': u'2017-12-07T00:00:00.000000-05:00'}, 

{u'optionType': None, u'dividendDate': u'2018-02-01T00:00:00.000000-05:00', u'eps': 2.95, u'currency': u'CAD', u'prevDayClosePrice': 35.28, u'averageVol3Months': 394431, u'industrySubgroup': u'InsuranceLife', u'isTradable': True, u'hasOptions': True, u'optionDurationType': None, u'optionExpiryDate': None, u'symbolId': 32316, u'outstandingShares': 713871000, u'tradeUnit': 1, u'optionStrikePrice': None, u'pe': 11.96, u'lowPrice52': 31.75, u'industrySector': u'FinancialServices', u'optionRoot': u'', u'description': u'POWER FINANCIAL CP', u'symbol': u'PWF.TO', u'securityType': u'Stock', u'dividend': 0.4125, u'minTicks': [{u'pivot': 0, u'minTick': 0.005}, {u'pivot': 0.5, u'minTick': 0.01}], u'averageVol20Days': 396594, u'industryGroup': u'InsuranceLife', u'optionContractDeliverables': {u'cashInLieu': 0, u'underlyings': []}, u'highPrice52': 37, u'yield': 4.68, u'listingExchange': u'TSX', u'isQuotable': True, u'optionExerciseType': None, u'marketCap': 25185368880, u'exDate': u'2017-12-28T00:00:00.000000-05:00'}, 

{u'optionType': None, u'dividendDate': u'2017-12-07T00:00:00.000000-05:00', u'eps': 2.03, u'currency': u'CAD', u'prevDayClosePrice': 24.85, u'averageVol3Months': 589611, u'industrySubgroup': u'REITRetail', u'isTradable': True, u'hasOptions': True, u'optionDurationType': None, u'optionExpiryDate': None, u'symbolId': 34330, u'outstandingShares': 326529000, u'tradeUnit': 1, u'optionStrikePrice': None, u'pe': 12.25, u'lowPrice52': 23.46, u'industrySector': u'RealEstate', u'optionRoot': u'', u'description': u'RIOCAN REAL EST INV TR', u'symbol': u'REI.UN.TO', u'securityType': u'Stock', u'dividend': 0.1175, u'minTicks': [{u'pivot': 0, u'minTick': 0.005}, {u'pivot': 0.5, u'minTick': 0.01}], u'averageVol20Days': 575707, u'industryGroup': u'REITs', u'optionContractDeliverables': {u'cashInLieu': 0, u'underlyings': []}, u'highPrice52': 27.25, u'yield': 5.68, u'listingExchange': u'TSX', u'isQuotable': True, u'optionExerciseType': None, u'marketCap': 8114245650, u'exDate': u'2017-11-29T00:00:00.000000-05:00'}]} 

これは私が(私は問題は息子のデータとどのように相互作用するか、forループの誤解によるものだと思います)していたコードの一部です:

indice = -1  

for y in data: 

      indice +=1 

      data = data['symbols'][indice] 
      try: 
       conn = sqlite3.connect('sql/investment_databse.db') 
       c = conn.cursor() 
       with conn: 
        c.execute('''INSERT INTO symbols(symbol,... 

コードのみを挿入するように動作しますデータの最初の項目。私はそれが3つすべてをループすることを望みます。

私は[インディス]を1ループごとに1つ増やしていくと、それが繰り返されると思いました。 Pythonでは、循環するデータには1つの要素しかないと思うようです。

私のコードが2つ目の項目をスキップして、データ辞書の3つの要素すべてを別々のSQLエントリとして挿入するコードを書くのを助けてくれますか?

ありがとうございます!

答えて

0

ここにであり、dataの要素は1つのみです。キーsymbols

data["symbols"]あなたは反復処理する必要があります。そして、indiceはまったく必要ありません。

for symbol in data["symbols"]: 
    print(symbol["optionType"]) # etc 
+0

これは驚きです!本当にありがとう。 –

関連する問題