sqlite3.ProgrammingError:提供的绑定数量不正确。 目前的声明使用1,并提供了74

def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] print(array[cnt]) cursor.execute('INSERT INTO images VALUES(?)', (img)) cnt+= 1 connection.commit() connection.close() 

我无法弄清楚为什么这是给我的错误,我试图插入的实际string是74个字符长,它是:“/ gifs /史诗 – 失败 – 照片 – 我 – 固定 – 它 – 噢人 – -tire-压力,low.gif”

我试图在插入之前str(array [cnt]),但同样的问题正在发生,数据库只有一列,这是一个TEXT值。

我已经呆了好几个小时了,我不知道是怎么回事。

你需要传递一个序列,但是你忘记了逗号使你的参数成为一个元组:

 cursor.execute('INSERT INTO images VALUES(?)', (img,)) 

没有逗号, (img)只是一个分组expression式,而不是元组,因此imgstring被视为input序列。 如果该string长度为74个字符,那么Python会将其视为74个单独的绑定值,每个字符长度不等。

 >>> len(img) 74 >>> len((img,)) 1 

如果你发现它更容易阅读,你也可以使用列表文字:

 cursor.execute('INSERT INTO images VALUES(?)', [img])