The problem appears to be that you are relying on positional placement of your parameters, which SQLAlchemy doesn't know how to interpret. Try creating a dictionary instead:
parameters=[
"name", my_name,
"class", my_class,
"gender", my_gender,
"mark", my_mark,
"hostel", my_hostel,
"address", my_address]
Then, pass that into your execute instead of val.