2016-10-05 53 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,))