sqlite3.ProgrammingError: Número incorrecto de enlaces proporcionados. La statement actual utiliza 1, y hay 74 suministrados

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

No puedo entender por qué esto me está dando el error. La cadena real que estoy tratando de insertar tiene una longitud de 74 caracteres, es: “/ gifs / epic-fail-photos-there-i-fixed-it-aww-man-the -tire-pressureures-low.gif ”

He intentado str (array [cnt]) antes de insertarlo, pero está ocurriendo el mismo problema, la base de datos solo tiene una columna, que es un valor de TEXTO.

He estado trabajando durante horas y no puedo entender qué está pasando.

Debe pasar una secuencia, pero olvidó la coma para hacer de sus parámetros una tupla:

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

Sin la coma, (img) es solo una expresión agrupada, no una tupla, y por lo tanto, la cadena img se trata como la secuencia de entrada. Si esa cadena tiene una longitud de 74 caracteres, Python lo ve como 74 valores de enlace separados, cada uno de los caracteres.

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

Si le resulta más fácil de leer, también puede usar un literal de lista:

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

Sólo toma dos argumentos.
¿Se repetirá la “matriz” -objeto y coincidirá? en la cadena sql.
(Con controles de cordura para evitar la inyección de sql)