在python脚本中,我有插入查询,但是当我想在同一查询中插入多列时,它给出了错误。 但对于单个查询,它的工作原理非常完美。 下面是我的代码。 我的数据库AWS S3。
A = [] #
for score_row in score:
A.append(score_row[2])
print("A=",A)
B = [] #
for day_row in score:
B.append(day_row[1])
print("B=",B)
for x,y in zip(A,B):
sql = """INSERT INTO calculated_corr_coeff(date,Day) VALUES (?,?)"""
cursor.executemany(sql, (x,),(y,))
当我用以下sql插入语句替换上面的查询时,它会完美工作。
sql = """INSERT INTO calculated_corr_coeff(date,Day) VALUES (?)"""
cursor.executemany(sql, (x,))
答案 0 :(得分:0)
像这样修正您的代码:
sql = """INSERT INTO calculated_corr_coeff(date,Day) VALUES (?,?)"""
cursor.execute(sql, (x,y,)) #<-- here
因为这只是一个onet插入(而不是多个插入)
说明
我想您对插入数(行)和参数数(每行要插入的字段)的数量感到误解。当您要插入几行时,请使用executemany
,而对于一行,您应该使用execute
。 execute
的第二个参数是要插入此行的值的“列表”(或序列)。
替代
您可以尝试更改语法,并使用** syntax一次将所有数据插入:
values = zip(A,B) #instead of "for"
sql = """INSERT INTO calculated_corr_coeff(date,Day) VALUES (?,?)"""
cursor.executemany(sql, **values )
请注意,这种方法不使用for
语句。这意味着所有数据都将在一次调用中发送到数据库,这样效率更高。