pyodbc AccessDB TypeError :(“参数必须在列表,元组或行中”,“ HY000”)

时间:2019-03-06 13:43:54

标签: ms-access pyodbc

在Windows 7上运行Python 3.7.2 32位并使用pyodbc软件包4.0.25-cp27 32bit

我尝试了多种方法来传递参数并不断出现上述错误:

  

TypeError :(“参数必须在列表,元组或行中,'HY000')

我的输入文件是一个包含以下内容的txt文件:

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值也尝试过:

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 个答案:

答案 0 :(得分:1)

cursor.execute(qry,params [0:8])有效

executemany导致了错误-参数必须位于列表,元组或行中

并且没有[0:8]列表通过列表末尾的'\ n'引起错误-SQL包含8个参数标记,但提供了9个参数

获奖答案是:

cursor.execute(qry,params [0:8])有效

感谢@gordthompson的提示