"INSERT INTO fruit (name, variety) VALUES (%s, %s)" % ("watermelon", "melon")
Dosłownie staje się
INSERT INTO fruit (name, variety) VALUES (watermelon, melon)
Zamiast ciągów watermelon
i melon
są kolumny. Aby to naprawić, umieść cudzysłowy wokół swojego %s
.
"INSERT INTO fruit (name, variety) VALUES ('%s', '%s')" % (new_fruit, new_fruit_type)
Powinieneś jednak uruchomić go jako:
cursor.execute("INSERT INTO fruit (name, variety) VALUES (%s, %s)", (new_fruit, new_fruit_type));
Zauważ, że usunęliśmy cytaty wokół %s
i przekazują zmienne jako drugi argument do execute
metoda. Execute
zapobiega wstrzykiwaniu sql ze zmiennych, a także zawija ciągi znaków w cudzysłów.
Aby uzyskać więcej informacji, zobacz http://mysql-python.sourceforge.net/ MySQLdb.html#some-examples