Prawidłowy sposób pisania przygotowanych oświadczeń jest następujący:
def create_student(surname, forename, dob, address, phone, gender, tutor, email):
cursor = mysql.connection.cursor()
cursor.execute('''
INSERT INTO students(surname, forename, dob, address, phone, gender, tutor, email)
VALUES(%s, %s, %s, %s, %s, %s, %s, %s)''', (surname, forename, dob, address, phone, gender, tutor, email))
mysql.connection.commit()
Błąd wynika z faktu, że moduł mysql nie znajduje miejsca, w którym umieścić parametry, które mu podajesz, ponieważ nie interpretuje znaków zapytania jako symboli zastępczych, a tym samym generuje błąd informujący, że _mysql_exceptions.ProgrammingError: not all arguments converted during string formatting
, co w ludzkim języku oznacza, że nie może zmieścić się w ciągu formatu.