ホームページ >バックエンド開発 >Python チュートリアル >長い文字列に対して SQLite INSERT ステートメントが「バインディングの数が正しくない」という理由で失敗するのはなぜですか?
バインディングの数が正しくありません
以下のコードを使用して SQLite データベースに文字列を挿入しようとすると、間違った数を示すエラーが発生しますバインディングの数:
def insert(array): connection=sqlite3.connect('images.db') cursor=connection.cursor() cnt=0 while cnt != len(array): img = array[cnt] cursor.execute('INSERT INTO images VALUES(?)', (img)) cnt+= 1 connection.commit() connection.close()
挿入される文字列が次の場合にエラー メッセージが表示されます。長さは 74 文字です。
問題の根本
コードは、一連の項目をバインド値としてexecute() メソッドに渡そうとします。ただし、バインド値パラメータにはタプルが必要であり、コードではタプルの作成に必要なカンマの指定が無視されます。
cursor.execute('INSERT INTO images VALUES(?)', (img)) # Missing comma
修正
問題を解決するにはこの問題が発生した場合は、バインド値パラメータの末尾にカンマを追加して、タプル:
cursor.execute('INSERT INTO images VALUES(?)', (img,))
または、リスト リテラルを使用することもできます。これも有効なシーケンスとして認識されます:
cursor.execute('INSERT INTO images VALUES(?)', [img])
どちらの修正を行っても、コードは画像パスを正しく挿入します。バインディングの数が正しくないというエラー メッセージを表示することなく、データベースに保存できます。
以上が長い文字列に対して SQLite INSERT ステートメントが「バインディングの数が正しくない」という理由で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。