Die richtige Art, vorbereitete Anweisungen zu schreiben, ist die folgende:
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()
Der Fehler kommt von der Tatsache, dass das mysql-Modul nicht findet, wo es die von Ihnen angegebenen Parameter einfügen soll, weil es die Fragezeichen nicht als Platzhalter interpretiert, und daher einen Fehler erzeugt, der Ihnen sagt, dass _mysql_exceptions.ProgrammingError: not all arguments converted during string formatting
, was in der menschlichen Sprache bedeutet, dass Ihre Argumente nicht in die Formatzeichenfolge passen konnten.