2016-10-05 21 views
0

看起来类似的问题已被提出,但我没有找到答案。如何在for循环中将python变量作为sqlite列名传递

城市列表中的城市在数据库中具有相应的列名称。我试图用pyowm找到一个特定城市的压力,然后将该值插入到适当的列中。

错误在于没有名为“city”的列。我可以看到问题是什么,但不知道如何解决。任何帮助是极大的赞赏!

import pyowm 
import sqlite3 

conn = sqlite3.connect(r"C:\Users\Hanley Smith\Desktop\machinelearning\pressure_table.db") 
cursor = conn.cursor() 

owm = pyowm.OWM('eb68e3b0c908251771e67882d7a8ddff') 

cities = ["tokyo", "jakarta"] 

for city in cities: 
    weather = owm.weather_at_place(city).get_weather() 
    pressure = weather.get_pressure()['press'] 
    cursor.execute("INSERT INTO PRESSURE (city) values (?)", (pressure,)) 

conn.commit() 
+0

你只是试图用一个变量作为列名或价值更清洁的方式吗? –

+0

@StevenByrne列名称的变量应该是“城市”列表中的“城市”。该值的变量应该是for循环中定义的“压力” –

回答

2

将变量名和字符串连接起来。

cursor.execute("INSERT INTO PRESSURE (" + city + ") values (?)", (pressure,)) 

%s

cursor.execute("INSERT INTO PRESSURE (%s) values (?)" % (city), (pressure,))