93
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-failsqlite3.ProgrammingError:指定された数のバインディングが正しくありません。現在のステートメントでは1が使用されており、74個が提供されています
私はそれを挿入する前にstr(配列[cnt])しようとしましたが、同じ問題は次のとおりです。データベースにはTEXT値である1つの列しかありません。
私は何時間もそれをしてきましたが、何が起こっているのか理解できません。
私たちは、そのミスを犯してきた高度なプログラマーの多く、とても愚かな感じする必要はありませんです。 :) – MrGumble
このビット私も。 「高度なコーダー」がこれに惑わされた場合、それは直感的ではないことを意味します。 IMHO 1つしかない場合、execute()が単一値のタプルの代わりに単一の値を取った場合、より自然なことでしょうか?クエリ内にあります。とにかく、ヒントありがとう! –
@ user465139: 'str'の'% '演算子は、タプルを複数の値として扱いますが、 'str'(または他の種類のiterable)を単一の値として扱います。しかし、それはそれを解決するよりもはるかに頻繁に混乱の原因となります。なぜなら、stdlibの他の誰もそのような魔法を試みることはほとんどありません。 – abarnert