"INSERT INTO fruit (name, variety) VALUES (%s, %s)" % ("watermelon", "melon")
Literalmente se torna
INSERT INTO fruit (name, variety) VALUES (watermelon, melon)
Em vez de strings,
watermelon
e melon
são colunas. Para corrigir isso, coloque aspas em seu %s
. "INSERT INTO fruit (name, variety) VALUES ('%s', '%s')" % (new_fruit, new_fruit_type)
No entanto, você deve executá-lo como:
cursor.execute("INSERT INTO fruit (name, variety) VALUES (%s, %s)", (new_fruit, new_fruit_type));
Observe que removemos as citações em torno do
%s
e estão passando as variáveis como o segundo argumento para o execute
método. Execute
impede a injeção de sql das variáveis, bem como envolve strings entre aspas. Para obter mais informações, consulte http://mysql-python.sourceforge.net/ MySQLdb.html#some-examples