2013-10-25 4 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

Смежные вопросы