我正在尝试迭代一个.json列表。我想在SQLite3中为'data‘中的这三个子列表中的每一个创建单独的条目。
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,...代码只用于在数据中插入第一项。我要它把这三个都循环一遍。
我想,如果我把每个循环增加一个,它就会循环通过。在我看来,Python认为数据中只有一个元素可以循环。
您能帮助我理解为什么我的代码跳过第二项,并帮助编写一个代码,将数据字典的所有三个元素作为单独的SQL条目插入吗?
谢谢!
发布于 2017-12-10 21:50:40
data中只有一个元素:键symbols。
您应该迭代的是data["symbols"]。你根本不需要indice。
for symbol in data["symbols"]:
print(symbol["optionType"]) # etchttps://stackoverflow.com/questions/47743737
复制相似问题