2015-07-25 8 views
-1

Я получаю эту ошибку в python, и я не знаю, как ее решить. Извините за мой английский, это не мой родной язык :(Недостаточно аргументов для строки форматирования Python-MySQL

TypeError: не хватает аргументов для строки формата

save_data = "INSERT INTO mediciones_historial VALUES('%s', '%s', '%s', '%s')" % (sensor, data, data_type) 

В моей базе данных у меня есть пять строк:

идентификатор (целое) датчик (INT) данные (текст) тип_данных (текст) Fecha (метка времени)

что такое, что я делаю неправильно?

Спасибо!

ответ

2

В коде:

save_data = "INSERT INTO mediciones_historial VALUES('%s', '%s', '%s', '%s')" % (sensor, data, data_type) 

Число% S спецификатор не совпадает количество аргументов вы передаете, также имена столбцов отсутствуют после имени таблицы

у вас есть чтобы сделать его согласно столбцу в таблице , но у python всегда есть лучший выбор.

Попробуйте использовать это:

save_data = "INSERT INTO mediciones_historial(column1,column2,column3) VALUES({0},{1},{2})".format(sensor, data, data_type) 

, но вы должны заботиться о типе данных, т.е. если это строка или дата типа, то используйте одинарные кавычки ('): „{0}“ вместо {0} ,

Также вышеизложенное представляется более понятным и читаемым. :)

+0

Спасибо вам большое! Mi работает сейчас! =) – EEBB

+0

Я рад, что это помогло. Вы также можете принять мой ответ :) – csharpcoder

+2

Это ужасно. Это уязвимо для SQL-инъекции. выполнить ("INSERT INTO mediciones_historial (column1, column2, column3) VALUES (% s,% s,% s)", [sensor, data, type_type]) – user9170

-1

Это связано с тем, что количество значений не соответствует количеству аргументов.

save_data = "INSERT INTO mediciones_historial VALUES('%s', '%s', '%s', '%s')" % (sensor, data, data_type, fecha) 
+0

Спасибо за ответ. Теперь у меня есть эта ошибка: «Количество столбцов не соответствует количеству значений в строке 1». – EEBB

+0

Получил это. Ваша схема таблиц имеет 5 столбцов, и мы пропустили столбец fecha в запросе вставки. Обновил мой пост выше. – Samir

Смежные вопросы