Python Forum
PyODBC error - second parameter to executemany must be a sequence, iterator, or gener - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: PyODBC error - second parameter to executemany must be a sequence, iterator, or gener (/thread-17131.html)



PyODBC error - second parameter to executemany must be a sequence, iterator, or gener - RBeck22 - Mar-29-2019

Hello,

I am trying this to get some values into SQLServer2017. when I try this code it throws pyodbc.ProgrammingError: The second parameter to executemany must be a sequence, iterator, or generator. How can I fix this

Thanks in advance
for key, value in myDict.items():
        for idx,retData in enumerate(value): 
            #everything into dict
            retData["remotecontrol_id"], idx
            retData["device_id"],idx 
            retData["alias"], idx
            retData["groupid"], idx
            retData["online_state"], idx
                        
            
    sqeel = ("""INSERT INTO dbo.devTBLA[remotecontrol_id], [device_id], [alias],[groupid],
    [online_state])) 
    values(%s, %s, %s, %s, %s, %s, %s)""")
    numRows = cursor.executemany(sqeel, retData) #second parameter to executemany must be a    sequence, iterator, or generator.


    connStr.commit()
    cursor.close()
    connStr.close()



RE: PyODBC error - second parameter to executemany must be a sequence, iterator, or gener - RBeck22 - Mar-29-2019

Hello Larx60+
Here is the code, Let me know if what else is needed> Thanks
import requests
from requests.auth import HTTPDigestAuth
import json
from pandas.io.json import json_normalize
import pandas as pd
from pandas import ExcelWriter
import random
import pyodbc
import sqlalchemy
def DBInsertD():
headers = {"content-type": "application/json", "Authorization": "Bearer nnnnn"}
    r = requests.get(url, headers=headers)   
    r3 = r.json() #Convert to JSON
connStr= pyodbc.connect('DRIVER={SQL Server};Server=Servername;Trusted_Connection=True;DATABASE=myDB')
    cursor = connStr.cursor()
    for key, value in r3.items():
        for idx,retData in enumerate(value): 
            #everything into dict
            retData["remotecontrol_id"], idx
            retData["device_id"],idx 
            retData["alias"], idx
            retData["groupid"], idx
            retData["online_state"], idx 
            
                        
            
    sqeel = ("""INSERT INTO dbo.TVDevicesA[remotecontrol_id], [device_id], [alias],[groupid],
    [online_state])) 
    values(%s, %s, %s, %s, %s, %s, %s)""")
    numRows = cursor.executemany(sqeel, x) #pyodbc.ProgrammingError: The second parameter to executemany must be a sequence, iterator, or generator.


    connStr.commit()
    cursor.close()
    connStr.close()
DBInsertD()
Error output
Error:
pyodbc.ProgrammingError: The second parameter to executemany must be a sequence, iterator, or generator. The program '[12832] python.exe' has exited with code -1 (0xffffffff)