在python脚本中,我有插入查询,但是当我想在同一查询中插入多个列时,它给出了错误

时间:2019-01-09 08:47:03

标签: python python-3.x python-2.7 amazon-s3

在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,))

1 个答案:

答案 0 :(得分:0)

像这样修正您的代码:

sql = """INSERT INTO calculated_corr_coeff(date,Day) VALUES (?,?)"""
cursor.execute(sql, (x,y,))  #<-- here

因为这只是一个onet插入(而不是多个插入)

说明

我想您对插入数(行)和参数数(每行要插入的字段)的数量感到误解。当您要插入几行时,请使用executemany,而对于一行,您应该使用executeexecute的第二个参数是要插入此行的值的“列表”(或序列)。

替代

您可以尝试更改语法,并使用** syntax一次将所有数据插入:

values = zip(A,B)   #instead of "for"
sql = """INSERT INTO calculated_corr_coeff(date,Day) VALUES (?,?)"""
cursor.executemany(sql, **values )

请注意,这种方法不使用for语句。这意味着所有数据都将在一次调用中发送到数据库,这样效率更高。