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])を試みましたが、同じ問題が発生しています。データベースには1つの列しかなく、これはTEXT値です。
私は何時間もそこにいて、何が起こっているのか分かりません。
シーケンスを渡す必要がありますが、パラメーターをタプルにするためにコンマを忘れました:
cursor.execute('INSERT INTO images VALUES(?)', (img,))
コンマを使用しない場合、(img)
はタプルではなくグループ化された式であるため、img
文字列は入力シーケンスとして扱われます。その文字列が74文字の場合、Pythonは、それぞれ1文字の長さの74個の個別のバインド値と見なします。
>>> len(img)
74
>>> len((img,))
1
読みやすい場合は、リストリテラルを使用することもできます。
cursor.execute('INSERT INTO images VALUES(?)', [img])
cursor.execute(sql,array)
2つの引数のみを取ります。
「配列」オブジェクトを繰り返して一致しますか? sql-string.
(sql-injectionを回避するための健全性チェック付き)