"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 https://mysql-python.sourceforge.net/ MySQLdb.html#some-examples