SQLite3 エラー: バインド値の数が一致しません
cursor.execute() メソッドを使用して SQLite3 データベースに値を挿入する場合、次のことが重要です。指定されたバインド値の数が SQL ステートメントのパラメーターで指定された数と一致することを確認してください。そうしないと、「指定されたバインディングの数が正しくありません」のようなエラーが発生する可能性があります。
次のコード スニペットを検討してください:
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 の文字列を挿入しようとすると、このコードは前述のエラーがスローされます。その理由は、cursor.execute() メソッドがバインド値のシーケンスを予期しているのに対し、(img) は単なる式であるためです。
これを修正するには、(img) をタプルまたはリストに変換する必要があります。カンマを追加して。修正されたコードは次のとおりです:
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,)) # Add a comma cnt+= 1 connection.commit() connection.close()
または、リスト リテラルを使用できます:
cursor.execute('INSERT INTO images VALUES(?)', [img])
以上がSQLite3 がデータの挿入時に「バインド値の数が一致しません」というエラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。