"INSERT INTO fruit (name, variety) VALUES (%s, %s)" % ("watermelon", "melon")
Wordt letterlijk
INSERT INTO fruit (name, variety) VALUES (watermelon, melon)
In plaats van strings, watermelon
en melon
zijn kolommen. Om dit op te lossen, plaatst u aanhalingstekens rond uw %s
.
"INSERT INTO fruit (name, variety) VALUES ('%s', '%s')" % (new_fruit, new_fruit_type)
U moet het echter uitvoeren als:
cursor.execute("INSERT INTO fruit (name, variety) VALUES (%s, %s)", (new_fruit, new_fruit_type));
Merk op dat we de aanhalingstekens rond de %s
. hebben weggehaald en geven de variabelen als het tweede argument door aan de execute
methode. Execute
voorkomt sql-injectie van de variabelen en plaatst tekenreeksen tussen aanhalingstekens.
Voor meer informatie, zie http://mysql-python.sourceforge.net/ MySQLdb.html#some-examples