Правилният начин за писане на подготвени изявления е следният:
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()
Грешката идва от факта, че модулът mysql не намира къде да постави параметрите, които му давате, тъй като не интерпретира въпросителните знаци като заместители и по този начин създава грешка, която ви казва, че _mysql_exceptions.ProgrammingError: not all arguments converted during string formatting
, което на човешки език означава, че не може да побере вашите агументи във форматния низ.