Python-sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用1,并且提供了74

发布于 2021-02-02 23:17:35

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]),但同样的问题也在发生,数据库只有一列,这是一个TEXT值。

我已经待了好几个小时了,无法弄清楚到底发生了什么。

关注者
0
被浏览
89
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看