@valera228822
Я такой

Почему возникает «TypeError: not all arguments converted during bytes formatting»?

Такой запрос не проходит:

cursor.execute("UPDATE hiveos SET status=0 WHERE id_farm=%s",('10'))

А такой проходит:

cursor.execute("UPDATE hiveos SET status=0 WHERE id_farm=%s",('5'))

Ошибка:

Traceback (most recent call last):
  File "C:\Users\Ivan\AppData\Roaming\Python\Python39\site-packages\MySQLdb\cursors.py", line 201, in execute
    query = query % args
TypeError: not all arguments converted during bytes formatting

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Ivan\Desktop\hiveos\test.py", line 77, in <module>
    run()
  File "C:\Users\Ivan\Desktop\hiveos\test.py", line 42, in run
    cursor.execute("UPDATE hiveos SET status=0 WHERE id_farm=%s",('10'))
  File "C:\Users\Ivan\AppData\Roaming\Python\Python39\site-packages\MySQLdb\cursors.py", line 203, in execute
    raise ProgrammingError(str(m))
MySQLdb._exceptions.ProgrammingError: not all arguments converted during bytes formatting
  • Вопрос задан
  • 531 просмотр
Решения вопроса 1
@galaxy
Тому що документацию надо читать.

Второй параметр execute() должен быть tuple или dict. В вашем случае tuple задается вот так:
cursor.execute("UPDATE hiveos SET status=0 WHERE id_farm=%s",('10',))

(найдите отличие)

С пятеркой все работает потому, что вместо tuple в принципе подойдет любой итерируемый объект, например, строка. Итерация по строке '5' выдает 1 шаг, а по строке '10' - два (значения '1' и '0')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы