sqlite3.ProgrammingError:提供的绑定数不正确。当前语句使用1

sqlite3.ProgrammingError:提供的绑定数不正确。当前语句使用1

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()

我不知道为什么会出现错误,我试图插入的实际字符串有74个字符长,它是:“/gifs/epic-fail-photos-there-i-fixed-it-aww-man-the-tire-pressures-low.gif”

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

我已经干了好几个小时了,我搞不懂到底是怎么回事。


慕的地8271018
浏览 1139回答 2
2回答

繁星点点滴滴

您需要传递一个序列,但是您忘记了用逗号将参数设置为元组:cursor.execute('INSERT INTO images VALUES(?)', (img,))没有逗号,(img)只是一个分组表达式,而不是元组,因此img字符串被视为输入序列。如果该字符串的长度为74个字符,那么Python将其视为74个单独的绑定值,每个值都有一个字符长。>>> len(img)74>>> len((img,))1如果发现更容易阅读,还可以使用列表文字:cursor.execute('INSERT INTO images VALUES(?)', [img])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python