SQLite - 错误“sqlite3.OperationalError:near”,“:语法错误”

时间:2017-03-01 21:25:52

标签: python-2.7 datetime sqlite

这个简单的问题令我感到困惑,虽然我希望它很容易解决,但我找不到必要的改变。

我想要完成的是构建一个简单的数据库表,其中包含昨天从天气降雨中降水的数据。我能够解析必要的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“,”:语法错误

1 个答案:

答案 0 :(得分:1)

SQL语句中有太多括号:

INSERT INTO Precip values(datetime('now'),(?, ?))

(?,?)将是一个包含两列的行值,这在这里没有意义。

VALUES子句预计会有三个表达式,所以请准确说明:

INSERT INTO Precip VALUES (datetime('now'), ?, ?)