pyodbc AccessDB TypeError: («Параметры должны быть в списке, кортеже или строке», «HY000») - PullRequest
0 голосов
/ 06 марта 2019

Запуск 32-разрядного Python 3.7.2 в Windows 7 и использование пакета pyodbc 4.0.25-cp27 32-разрядного

Я пробовал несколько способов пройти через параметры и продолжаю получать вышеуказанную ошибку:

TypeError: («Параметры должны быть в списке, кортеже или строке», «HY000»)

Мой входной файл - это текстовый файл, содержащий:

TEST ,EU ,Totals , 30, 0.61, 0.00000000,GOLD ,01/03/2019,   
TEST ,EU ,SubTotals , 40, 0.63, 0.00000000,GOLD ,01/03/2019,

Несколько версий:

qry = """INSERT INTO newtable ([Col1], [Col2], [Col3], [Col4], [Col5], [Col6], [Col7], [Col8]) VALUES (?,?,?,?,?,?,?,?);"""  

with open (inputfile, "r") as afile:  
    for line in afile:  
        params = tuple(line.split(','))  
        cursor.executemany(qry, params)  
conn.commit()  

для значения параметра также пробовал:

params = list(line.split(','))

Также попытался вставить все значения в список одно за другим:

params = list(line.split(","))  
a = params[0]  
b = params[1]  
c = params[2]  
d = params[3]   
e = params[4]  
f = params[5]  
g = params[6]  
h = params[7]  
dbparams = [a,b,c,d,e,f,g,h]   
cursor.executemany(qry,dbparams) 

1 Ответ

1 голос
/ 06 марта 2019

cursor.execute (qry, params [0: 8]) сработало

executemany вызывал ошибку - параметры должны быть в списке, кортеже или строке

и без [0: 8] список проходил через '\ n' в конце списка, вызывая ошибку - SQL содержит 8 маркеров параметров, но было передано 9 параметров

Победивший ответ был:

cursor.execute (qry, params [0: 8]) сработало

спасибо @gordthompson за приглашение

...