2013-10-25 52 views
1

我正在尝试更新一行MySQL中的数据,这行代码引发了此错误。MySQL Python更新行

for k in range(city_count): 
    cur.execute("UPDATE hqstock SET citylastprice = '%s' WHERE id = '%s'"%(CITYPRICE[k], tID[k])) 

被返回的错误:

File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 201, in execute 
    self.errorhandler(self, exc, value) 
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler 
    raise errorclass, errorvalue 
InterfaceError: (0, '') 

这是我的表结构。

+--------------------+------------------+------+-----+---------+-------+ 
| Field    | Type    | Null | Key | Default | Extra | 
+--------------------+------------------+------+-----+---------+-------+ 
| id     |int(11) unsigned | NO | PRI | NULL |  | 
| barcode   | char(15)   | YES |  | NULL |  | 
| citycurstock  | smallint(6)  | YES |  | NULL |  | 
| citylastprice  | demical(4,2)  | YES |  | NULL |  | 
| city    | varchar(60)  | YES |  | NULL |  | 
+--------------------+------------------+------+-----+---------+-------+ 

有人知道我的查询语句有什么问题吗?或者为什么不工作?

+0

可能重复的[MySQLdb的interfaceError](http://stackoverflow.com/questions/5704590/mysqldb-interfaceerror)和[InterfaceError(0, '')](HTTP: //stackoverflow.com/q/6650940) –

+3

注意:不要使用字符串插值;请使用SQL参数:'cur.execute(“UPDATE hqstock SET citylastprice =%s WHERE id =%s”,(CITYPRICE [k],tID [k]))';这留下引用数据库适配器(更安全,更方便)。 –

回答

1

尝试:

for k in range(city_count): 
    cur.execute("UPDATE hqstock SET citylastprice = '%s' WHERE id = '%s'"% (CITYPRICE[k], tID[k])) 
    cur.commit() 
+0

工程就像一个魅力。这有助于我遇到的第二个问题。谢谢 – user2828757