SQLite3 のバインディング エラー
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 文字の文字列を挿入しようとした場合を実行すると、バインディングの数とパラメーターの不一致を示すエラー メッセージが表示されます。
この問題を解決するには、有効なシーケンスをパラメータ。この場合、img 変数を囲むかっこには、タプルを作成するためのカンマを含める必要があります:
cursor.execute('INSERT INTO images VALUES(?)', (img,))
または、リスト リテラルを使用できます:
cursor.execute('INSERT INTO images VALUES(?)', [img])
パラメーターを修正することにより、クエリに正しい数のバインディングを指定すると、エラーが解決され、データを正常に挿入できるようになります。
以上がSQLite3 コードで「指定されたバインディングの数が正しくありません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。