MySQLdb Python вставляет% d и% s

предшественник:

MySQL Table created via:
CREATE TABLE table(Id INT PRIMARY KEY NOT NULL, Param1 VARCHAR(50))

Функция:

.execute("INSERT INTO table VALUES(%d,%s)", (int(id), string)

Выход:

TypeError: %d format: a number is required, not a str

Я не уверен, что здесь происходит или почему я не могу выполнить команду. Это использует MySQLdb в Python. .execute выполняется на объекте курсора.

РЕДАКТИРОВАТЬ:

Вопрос: Python MySQLdb выпускает (Ошибка типа:% d формат: число требуется, а не str) говорит, что вы должны использовать %s для всех полей. Почему это может быть? Почему эта команда работает?

.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string)

Ответ 1

Поскольку весь запрос должен быть в строчном формате во время выполнения запроса, поэтому %s следует использовать...

После выполнения запроса сохраняется целочисленное значение.

Итак, ваша строка должна быть.

.execute("INSERT INTO table VALUES(%s,%s)", (int(id), string))

Объяснение здесь

Ответ 2

Строка формата на самом деле не является обычной строкой формата Python. Вы всегда должны использовать% s для всех полей

Ответ 3

Вы пропустили '%' в форматировании строк

"(INSERT INTO table VALUES(%d,%s)"%(int(id), string))