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))