ホームページ >バックエンド開発 >Python チュートリアル >パラメーター化された SQL クエリで「文字列のフォーマット中に一部の引数が変換されませんでした」というエラーがスローされるのはなぜですか?

パラメーター化された SQL クエリで「文字列のフォーマット中に一部の引数が変換されませんでした」というエラーがスローされるのはなぜですか?

DDD
DDDオリジナル
2024-12-03 14:12:18204ブラウズ

Why Does My Parameterized SQL Query Throw a

パラメータ化された SQL クエリ エラーのトラブルシューティング: 「文字列のフォーマット中に一部の引数が変換されない」の解決

パラメータ化された SQL クエリを実行しようとすると、開発者は「TypeError: 文字列のフォーマット中に一部の引数が変換されませんでした。」というエラーが発生します。この問題は通常、パラメータが不十分または誤ってフォーマットされたクエリで文字列フォーマットを使用する場合に発生します。

このエラーを解決するには、フォーマットされた文字列内の各プレースホルダがクエリ内の対応する引数と一致していることを確認することが重要です。 。指定されたコード スニペット:

cur.execute("SELECT * FROM records WHERE email LIKE '%s'", search)

クエリ内のプレースホルダー '%s' は、検索内の値に置き換えられるパラメーターを表します。ただし、execute メソッドはパラメータを含むリストまたはタプルを期待します。これを修正するには、次の変更を加えます。

cur.execute("SELECT * FROM records WHERE email LIKE %s", [search])

検索をリストでラップすると、個々のパラメーターに展開できる反復可能になります。 MySQLdb でパラメータ化されたクエリを実行するための正しい構文では、パラメータをリストとして渡す必要があります。

この簡単な調整により、文字列のフォーマット中にすべての引数が正しく変換され、前述のエラーが排除されます。あるいは、パラメータを渡すためのリストの代わりにタプル (不変リスト) を使用することもできます。

以上がパラメーター化された SQL クエリで「文字列のフォーマット中に一部の引数が変換されませんでした」というエラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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