"INSERT INTO fruit (name, variety) VALUES (%s, %s)" % ("watermelon", "melon")
Blir bokstavligen
INSERT INTO fruit (name, variety) VALUES (watermelon, melon)
Istället för strängar, watermelon
och melon
är kolumner. För att fixa detta, sätt citattecken runt din %s
.
"INSERT INTO fruit (name, variety) VALUES ('%s', '%s')" % (new_fruit, new_fruit_type)
Du bör dock köra det som:
cursor.execute("INSERT INTO fruit (name, variety) VALUES (%s, %s)", (new_fruit, new_fruit_type));
Lägg märke till att vi tog bort citaten kring %s
och skickar variablerna som det andra argumentet till execute
metod. Execute
förhindrar sql-injektion från variablerna samt lindar strängar inom citattecken.
För mer information, se http://mysql-python.sourceforge.net/ MySQLdb.html#some-examples