在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)
答案 0 :(得分:1)
cursor.execute(qry,params [0:8])有效
executemany导致了错误-参数必须位于列表,元组或行中
并且没有[0:8]列表通过列表末尾的'\ n'引起错误-SQL包含8个参数标记,但提供了9个参数
获奖答案是:
cursor.execute(qry,params [0:8])有效
感谢@gordthompson的提示