Я попытался это много способов, и я не могу показаться, чтобы понять это, но в любом случае вот что им делать:Python - MySQLdb - Обновление строки вызывает TypeError: не достаточно аргументов для строки формата
threadupdatequery = "UPDATE %s SET topic_name=%%s, subject_name=%%s, poster_name=%%s, time=%%s, image=%%s, replies=%%s, id=%%s, keywords=%%s, text=%%s WHERE id=%%s" % ('Threads')
...
(topic, subject, name, time, image, replies, ID, kw, body) = self.tframe.Get()
cur.execute(threadupdatequery, (topic, subject, name, time, image, replies, ID, kw, body))
Первоначально я сделал это, которое у меня не было сомнений, будет работать, но я был неправ:
cur.execute(threadupdatequery, self.tframe.Get())
я получаю:
File "C:\Python27\Work\SiteEditor.py", line 216, in UpdateThread
cur.execute(threadupdatequery, (topic, subject, name, time, image, replies, ID, kw, body))
File "C:\Python27-32Bit\lib\site-packages\MySQLdb\cursors.py", line 184, in execute
query = query % db.literal(args)
TypeError: not enough arguments for format string
что точно я делаю неправильно? Обычно я делаю некоторые глупые ошибки, но я просто не вижу его на этот раз ...
Спасибо :)
10 раз %% s, но только 9 переменных в execute() -> отсутствует последний id? – Gryphius
Wow thats совсем не то, что я ожидал, но да, это было вам спасибо, я полностью забыл о 'WHERE id = %% s' part –
добавлен как ответ, не стесняйтесь принимать, если он решил вашу проблему ;-) – Gryphius