0

So I'm trying to build a student-management system and I've built a table in mysql and connected the database to python using pymysql. Now I want to have a function (in python) that accepts data from the user and adds it to the table.

Here's what the table looks like:

Here's the code for the table:

create table student_management(
    Admisson_Number int(5) primary key,
    Student_Name varchar(100),
    Student_Class varchar(7),
    Section varchar(2),
    Average_Grade varchar(2)
);
select * from student_management;
insert into student_management
values(1,'Harry Potter','5','F','A');
insert into student_management
values(2,'Dani Clayton','11','B','A1');
insert into student_management
values(3,'Fidel Piker','9','L','A');
insert into student_management
values(4,'Aubrey Graham','12',' J','B2');
insert into student_management
values(5,'Abel Makkonen Tesfaye','7','K','B1');

Now the problem arises. Here's the function I wrote in python to accept data and add it to the table.

import pymysql

stdconn = pymysql.connect(host='localhost', user='root', password="password", db='db1')
MyCur = stdconn.cursor()


def addstudent():
    admno = input("Enter Student's Admission Number:")
    stdname = input("Enter Student's Name :")
    stdclass = input("Enter Student's Class:")
    section = input("Enter Section:")
    avggrade = input ("Enter Student's Avg Grade:")
    data = (admno, stdname, stdclass, section, avggrade)
    sql = ("insert into student_management values (%s, %s, %s, %s, %s")
    MyCur = stdconn.cursor()
    MyCur.execute(sql, data)
    stdconn.commit()
    print("Student Has Been Added")

addstudent()

Running the code results in the following error :

Enter Student's Admission Number:6
Enter Student's Name :abc
Enter Student's Class:9
Enter Section:J
Enter Student's Avg Grade:A
Traceback (most recent call last):
  File "D:/practice.py", line 47, in menu
    addstudent()
  File "D:/practice.py", line 113, in addstudent
    MyCur.execute(sql, data)
  File "C:\Users\super\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pymysql\cursors.py", line 148, in execute
    result = self._query(query)
  File "C:\Users\super\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pymysql\cursors.py", line 310, in _query
    conn.query(q)
  File "C:\Users\super\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pymysql\connections.py", line 548, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "C:\Users\super\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pymysql\connections.py", line 775, in _read_query_result
    result.read()
  File "C:\Users\super\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pymysql\connections.py", line 1156, in read
    first_packet = self.connection._read_packet()
  File "C:\Users\super\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pymysql\connections.py", line 725, in _read_packet
    packet.raise_for_error()
  File "C:\Users\super\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "C:\Users\super\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1")

Process finished with exit code 1

It says I have an error in my "SQL syntax" but I cant seem to find it. How should I go about fixing this issue? thanks in advance.

2 Answers 2

1

you're missing a bracket as mentioned in the other answer

Sign up to request clarification or add additional context in comments.

Comments

1

I think your line :

sql = ("insert into student_management values (%s, %s, %s, %s, %s")


should be

sql = ("insert into student_management values (%s, %s, %s, %s, %s)")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.