首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过.JSON字典循环并通过SQLite3插入项目

通过.JSON字典循环并通过SQLite3插入项目
EN

Stack Overflow用户
提问于 2017-12-10 21:40:20
回答 1查看 162关注 0票数 0

我正在尝试迭代一个.json列表。我想在SQLite3中为'data‘中的这三个子列表中的每一个创建单独的条目。

代码语言:javascript
复制
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循环如何与子数据交互产生了误解):

代码语言:javascript
复制
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条目插入吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-10 21:50:40

data中只有一个元素:键symbols

您应该迭代的是data["symbols"]。你根本不需要indice

代码语言:javascript
复制
for symbol in data["symbols"]:
   print(symbol["optionType"]) # etc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47743737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档