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

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

Linda Hamilton
リリース: 2024-11-29 01:15:13
オリジナル
213 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート