这个简单的问题令我感到困惑,虽然我希望它很容易解决,但我找不到必要的改变。
我想要完成的是构建一个简单的数据库表,其中包含昨天从天气降雨中降水的数据。我能够解析必要的json数据,但是当我尝试向DB条目添加时间戳时,我无法填充数据库。我能够将这种语法与一个变量一起使用,然而相关的DB更改除了时间戳之外没有2个变量。以下是代码的简化版本:
conn = sqlite3.connect('precip.sqlite3')
curs = conn.cursor()
curs.execute('''
CREATE TABLE IF NOT EXISTS Precip
(timestamp DATETIME, date TEXT, precip TEXT)''')
date = js["history"]["date"]["pretty"]
precip = js["history"]["dailysummary"][0]["precipm"]
print "date:", date, "precipitation", precip, "mm"
curs.execute("INSERT INTO Precip values(datetime('now'),(?, ?))",(date, precip,))
conn.commit()
失败并出现此错误: curs.execute(“INSERT INTO Precip values(datetime('now'),(?,?))”,(date,precip,)) sqlite3.OperationalError:near“,”:语法错误
答案 0 :(得分:1)
SQL语句中有太多括号:
INSERT INTO Precip values(datetime('now'),(?, ?))
(?,?)
将是一个包含两列的行值,这在这里没有意义。
VALUES子句预计会有三个表达式,所以请准确说明:
INSERT INTO Precip VALUES (datetime('now'), ?, ?)