【问题标题】:How to pass a python variable as a sqlite column name in a for-loop [duplicate]如何在for循环中将python变量作为sqlite列名传递[重复]
【发布时间】:2017-02-13 08:17:22
【问题描述】:

似乎有人问过类似的问题,但我没有找到答案。

城市列表中的城市在数据库中具有相应的列名。我正在尝试使用 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()

【问题讨论】:

  • 您只是想使用变量作为列名还是值?
  • @StevenByrne 列名的变量应该是“城市”列表中的“城市”。该值的变量应该是 for 循环中定义的“压力”

标签: python sqlite


【解决方案1】:

像这样将变量名与字符串连接起来。

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

或者使用%s 更简洁的方式

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

【讨论】:

    猜你喜欢
    • 2019-11-29
    • 2013-10-25
    • 2019-03-31
    • 1970-01-01
    • 2018-11-14
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多