如何将每个循环从for循环分配给数据库存储变量

时间:2019-04-27 06:30:54

标签: python database for-loop variables

我正在尝试从API收集天气数据,然后将其存储在数据库中以供以后使用。

我已经能够使用for循环访问数据并将其打印出来,但是我想将for循环的每次迭代分配给一个变量,该变量存储在数据库的不同位置。

我该怎么做?

下面的我当前的代码:

#!/usr/bin/python3

from urllib.request import urlopen
import json

apikey="redacted"
# Latitude & longitude
lati="-26.20227"
longi="28.04363"

# Add units=si to get it in sensible ISO units
url="https://api.forecast.io/forecast/"+apikey+"/"+lati+","+longi+"?units=si"

meteo=urlopen(url).read()
meteo = meteo.decode('utf-8')
weather = json.loads(meteo)

cTemp = (weather['currently']['temperature'])
cSum = (weather['currently']['summary'])
cRain1 =  (weather['currently']['precipProbability'])
cRain2 = cRain1*100
daily = (weather['daily']['summary'])

print (cTemp)
print (cSum)
print (cRain2)
print (daily)

#Everthing above this line works as expected, I am focusing on the below code

dailyTHigh = (weather['daily']['data'])

for i in dailyTHigh:
        print (i['temperatureHigh'])

给我以下输出:

12.76
Clear
0
No precipitation throughout the week, with high temperatures rising to 24°C on Friday.
22.71
22.01
22.82
23.13
23.87
23.71
23.95
22.94

如何将8个高温中的每个温度分配给不同的变量?

即, var1 = 22.71 var2 = 22.01 等

预先感谢

3 个答案:

答案 0 :(得分:2)

IMO,您需要某种动态长度数据结构,可以在其中将数据附加到for循环中,然后使用index进行访问。

因此,您可以创建一个list,然后将for lop的所有值附加到其中,如下所示:

list = []
for i in dailyTHigh:
        list.append(i['temperatureHigh'])

现在,您将能够访问list的值,如下所示:

for i in range(0,len(x)):
    print x[i]

上面的方法很好,因为您不需要知道需要插入的项目数,因为您可能需要相等数量的变量才能为其分配值。您还可以轻松访问这些值。

答案 1 :(得分:1)

请整理一下我对已接受答案的上述评论

#Everthing above this line works as expected, I am focusing on the below code

dailyTHigh = (weather['daily']['data'])
list = []

for i in dailyTHigh:
        list.append(i['temperatureHigh'])

for i in range(0,len(list)):
        var1 = list[0]
        var2 = list[1]

将每个列表迭代保存到一个变量中,我知道总是会有8个变量,所以这对我有用

print (var1)

仅仅为了测试就给了我我想要的东西

答案 2 :(得分:0)

IMO,您可以使用堆栈数据结构并将数据以FILO(先进先出)形式存储。这样,您就可以以更有效的方式管理数据,即使它的大小(将来)会更大