"INSERT INTO fruit (name, variety) VALUES (%s, %s)" % ("watermelon", "melon")
devient littéralement
INSERT INTO fruit (name, variety) VALUES (watermelon, melon)
Au lieu de chaînes, watermelon
et melon
sont des colonnes. Pour résoudre ce problème, placez des guillemets autour de votre %s
.
"INSERT INTO fruit (name, variety) VALUES ('%s', '%s')" % (new_fruit, new_fruit_type)
Cependant, vous devez l'exécuter en tant que :
cursor.execute("INSERT INTO fruit (name, variety) VALUES (%s, %s)", (new_fruit, new_fruit_type));
Remarquez que nous avons supprimé les guillemets autour du %s
et transmettent les variables comme deuxième argument au execute
méthode. Execute
empêche l'injection SQL à partir des variables et place les chaînes entre guillemets.
Pour plus d'informations, consultez http://mysql-python.sourceforge.net/ MySQLdb.html#quelques-exemples