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()
Je ne comprends pas pourquoi cela me donne l'erreur, La chaîne réelle que j'essaie d'insérer est de 74 caractères, c'est: "/ gifs / epic-fail-photos-there-i-fixed-it-aww-man-the -tire-pressions-low.gif "
J'ai essayé de str (array [cnt]) avant de l'insérer, mais le même problème se produit, la base de données n'a qu'une seule colonne, qui est une valeur TEXT.
J'y suis depuis des heures et je n'arrive pas à comprendre ce qui se passe.
%
opérateur onstr
fait ce genre de magie - il traite un tuple comme plusieurs valeurs, mais astr
(ou tout autre type d'itérable) comme une valeur unique. Mais cela cause de la confusion beaucoup plus souvent que cela ne le résout, c'est pourquoi presque rien d'autre dans le stdlib ne tente ce genre de magie.%s
n'est pas non plus recommandée pour des raisons de sécurité - docs.python.org/3/library/sqlite3.htmlcursor.execute(sql,array)
Prend seulement deux arguments.
Il itérera l'objet "tableau" et correspondra? dans la chaîne sql.
(avec des contrôles de cohérence pour éviter l'injection SQL)
la source