Используйте параметризованный sql:
sql='UPDATE proxydata SET description = ? WHERE proxy = ?'
args=[decription,proxy]
self.c.execute(sql,args)
Это явно проще, так как вам не нужно самим приводить аргументы и, следовательно, меньше подвержены ошибкам.Это также безопаснее, поскольку параметризация sql позволяет sqlite3 защищать от внедрения sql.
Обратите внимание, что если proxy
или description
содержит только одну кавычку, то его необходимо экранировать.Ваше ручное построение оператора SQL неправильно экранирует кавычки этого типа.Это может быть причиной синтаксической ошибки, которую вы видите.
Редактировать: Как уже отмечали другие, реальная причина синтаксической ошибки заключается в том, что UPDATE ... VALUES ... WHERE
не является допустимым (sqlite) SQL.Правильный синтаксис - UPDATE ... SET ... WHERE
.