Я снимаю запрос через python вот так:
cur.execute("INSERT INTO tblMQTTtest (string) VALUES ('test')")
con.commit()
который отлично работает. Но если я перейду к делу и воспользуюсь пробелом, я получаю сообщение об ошибке: /
var1 = 'mystring'
cur.execute("INSERT INTO tblMQTTtest (string) VALUES (%s)", (var1))
con.commit()
Ошибка:
File "mqtt1.py", line 25, in write cur.execute("INSERT INTO tblMQTTtest (string) VALUES (%s)", (var1)) TypeError: not all arguments converted during string formatting
Любые идеи?
Я не ожидал, что мне придется использовать кортеж для одного значения. Это работает, и это сводило меня с ума. Спасибо!
При повторном чтении дубликата я могу подтвердить, что он ответил бы на мой вопрос, если бы я читал его, зная кортеж.






Думаю, нужно заменить запятую на%. Python не умеет заполнять %s без оператора %. Пытаться:
cur.execute("INSERT INTO tblMQTTtest (string) VALUES (%s)" % var1 )
Это плохой совет. Вы не должны вставлять переменные в свой SQL. ОП был прав, передав переменные отдельно в execute. xkcd.com/327
Вы можете объяснить, почему это плохой совет?
(var1)не является кортежем. Это просто переменная в скобках. Должен быть(var1,)