2016-10-04 85 views
0

我:sqlite3用“?”更新数据库 - 蟒蛇

数据库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() 

希望有任何帮助。谢谢。

+0

什么是错误信息?是因为你插入了两个参数,但'execute'只有一个? – imant

+0

“sqlite3.ProgrammingError:提供的绑定数量不正确。”我没有选择数据[0],这是元组的第一个值。 –

+0

你的意思是'data [0]'的值是“Johnny”?纠正我,如果我错了。 – imant

回答

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

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

虽然在你的问题中你说data[0] = ('Johnny', 'None'),在注释中你指出data[0]是元组的第一个值。所以我认为后者是这种情况。

+0

是的,这是正确的。非常感谢你。 –