Sql-инструкция с переменными в python

#python #sql

#python #sql

Вопрос:

Я пытаюсь выполнить sql-инструкцию через python. Но это не работает:

 cursor.execute("UPDATE setting set foo=%s WHERE bar=%s", 4, str(sys.argv[1]))
  

Это также не работает:

 t = ("4",sys.argv[1])
cursor.execute('UPDATE setting set foo=? WHERE bar=?', t)
  

Но этот работает:

 cursor.execute('UPDATE setting set foo=%s WHERE bar="something"', 3)
  

Что я делаю не так?

Комментарии:

1. У вас есть какие-либо подробности о сообщении об ошибке? Чему равен sys.argv[1] перед тем, как вы вставите его в SQL?

Ответ №1:

Попробуйте запустить

 cursor.execute("UPDATE setting set foo=%s WHERE bar=%s", (4, str(sys.argv[1])))
  

Аргументы необходимо передавать в виде кортежа, если их более одного.

Ответ №2:

Я думаю, вам нужно передать параметры в виде кортежа, даже если существует только один:

 cur.execute("insert into people values (?, ?)", (who, age))
  

Или:

 cur.execute("insert into people values (?, 100)", (who,))