0

Even though I pass a list as params I am getting the below error while executing the query

TypeError: ('Params must be in a list, tuple, or Row', 'HY000')

I am trying to pass multiple rows to sql table using executemany

Please find my code below and help, I am new to python.

query = """INSERT INTO TableTest (Summary) Values (%s)"""
val = [('SPHXNORF2ASW1'),('CHNSIRSDB1USAA'),('NKOLGTPRAVPNVM'),('STAMHO3WANCEG'),('SPHXNORWANCEG1'),('SPHXNORWANCE'),('STAMHO3WANCEG')]
       
     
                 
      
cursor = conn.cursor()

cursor.executemany(query,val)

conn.commit()   ```

1 Answer 1

2

In python, putting a value inside '()' does not make it tuple. So, this code

val = [('SPHXNORF2ASW1'),('CHNSIRSDB1USAA'),('NKOLGTPRAVPNVM'),('STAMHO3WANCEG'),('SPHXNORWANCEG1'),('SPHXNORWANCE'),('STAMHO3WANCEG')]
    

will be converted to

['SPHXNORF2ASW1', 'CHNSIRSDB1USAA', 'NKOLGTPRAVPNVM', 'STAMHO3WANCEG', 'SPHXNORWANCEG1', 'SPHXNORWANCE', 'STAMHO3WANCEG']

If you want to specify it as a tuple, add a trailing comma like below or use '[]' instead of tuple.

Use:

val = [('SPHXNORF2ASW1',),('CHNSIRSDB1USAA',),('NKOLGTPRAVPNVM',),('STAMHO3WANCEG',),('SPHXNORWANCEG1',),('SPHXNORWANCE',),('STAMHO3WANCEG',)]

Or:

[ ['SPHXNORF2ASW1'], ['CHNSIRSDB1USAA'], ['NKOLGTPRAVPNVM'], ['STAMHO3WANCEG'], ['SPHXNORWANCEG1'], ['SPHXNORWANCE'], ['STAMHO3WANCEG']]
Sign up to request clarification or add additional context in comments.

2 Comments

Thank you so much for sharing the knowledge you got, it worked for me.
Good to know it helped you. You can accept it as the answer if the issue was resolved

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.