"Not all parameters were used in the SQL statement"

Question:

i am not able to find what is error in this code. help!!!

class accountManage:
    def connection(self):
        db=mysql.connector.connect(username="root",password="jhanguman",database="test")
    def createTable(self):
        cursor=db.cursor()
        #cursor.execute("drop table if exists")
        cursor.execute('''create table if not exists ACCOUNT (
              Account_ID int PRIMARY KEY,
              Account_Name varchar(250),
              Account_Size int,
              Account_Duration int,
              Account_Budget float,
              Status char(10))''')
        cursor.close()
    def insert(self):
        n=int(input("No of rows to insert: "))
        for i in range(n):
            Id=int(input())
            name=input()
            size=int(input())
            duration=int(input())
            budget=float(input())
            status=input()
            cursor=db.cursor()
            cursor.execute("""INSERT INTO ACCOUNT (Account_ID,Account_Name,Account_Size,Account_Duration,Account_Budget,Status) VALUES(?,?,?,?,?,?)""", (Id,name,size,duration,budget,status))
            #db.commit()
            #cursor.close()
            
account=accountManage()
choice=int(input("enter choice....1:connection, 2.create table 3. insert no of rows"))
if(choice==1):
    account.connection()
elif(choice==2):
    account.createTable()
elif(choice==3):
    account.insert()

Output:

enter choice....1:connection, 2.create table 3. insert no of rows3
No of rows to insert: 1
2
rohan
10
100
12000
active
---------------------------------------------------------------------------
ProgrammingError                          Traceback (most recent call last)
<ipython-input-21-8850a7d4652a> in <module>
     34     account.createTable()
     35 elif(choice==3):
---> 36     account.insert()
     37 

<ipython-input-21-8850a7d4652a> in insert(self)
     23             status=input()
     24             cursor=db.cursor()
---> 25             cursor.execute("""INSERT INTO ACCOUNT (Account_ID,Account_Name,Account_Size,Account_Duration,Account_Budget,Status) VALUES(?,?,?,?,?,?)""", (Id,name,size,duration,budget,status))
     26             #db.commit()
     27             #cursor.close()

~anaconda3libsite-packagesmysqlconnectorcursor_cext.py in execute(self, operation, params, multi)
    272                 stmt = RE_PY_PARAM.sub(psub, stmt)
    273                 if psub.remaining != 0:
--> 274                     raise ProgrammingError(
    275                         "Not all parameters were used in the SQL statement"
    276                     )

ProgrammingError: Not all parameters were used in the SQL statement

i have tried doing the same without using class and its running smoothly.
…………………………………..
………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………….
……………..
………….
………
……..
…..

Asked By: ghostatpost

||

Answers:

You are using ‘?’ insted of ‘%s’ in the insert. The insert should be:

cursor.execute("""INSERT INTO ACCOUNT (Account_ID,Account_Name,Account_Size,Account_Duration,Account_Budget,Status) VALUES(%s,%s,%s,%s,%s,%s)""", (Id,name,size,duration,budget,status))
Answered By: Paulo A Coelho