sqlite3使用"?"更新数据库 - 蟒蛇

时间:2016-10-04 16:16:06

标签: python sql sqlite insert

我有:

数据库testing.db3 表:mytable 列:'名称','状态'

我做:

con = sqlite3.connect('testing.db3')
cur = con.cursor()
cur.execute('select * from mytable where status is null')

data = cur.fetchone()
print(data[0])

我希望收到以下结果:

('Johnny', 'None')

现在我正在尝试更新这一行,如果我这样做,它会起作用:

cur.execute('UPDATE mytable SET status = "Online" WHERE name is "Johnny"')

但是如果我想用'?'更新它,它就不起作用了。知道为什么吗?

cur.execute('UPDATE mytable SET status = "Online" WHERE name is ?', data[0])
con.commit()
con.close()

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

cur.execute('UPDATE mytable SET status = "Online" WHERE name is ?', (data[0], ))

execute期望元组作为输入参数。因此,即使您只插入一个值,也应将其格式化为元组。

虽然您在问题中说data[0] = ('Johnny', 'None'),但在评论中您指出data[0]是元组的第一个值。所以我假设后一种情况就是这样。