ホームページ >バックエンド開発 >Python チュートリアル >SQLite3 がデータの挿入時に「バインド値の数が一致しません」というエラーをスローするのはなぜですか?

SQLite3 がデータの挿入時に「バインド値の数が一致しません」というエラーをスローするのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-29 01:15:13286ブラウズ

Why Does SQLite3 Throw a

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。