ホームページ >データベース >mysql チュートリアル >私の Python MySQL コードで「SQL ステートメントで一部のパラメーターが使用されていません」というエラーがスローされるのはなぜですか?
MySQL ステートメントで一部のパラメーターが使用されていない: Python でのトラブルシューティング
概要
実行時Python と mysql.connector ライブラリを使用した SQL クエリです。 SQL ステートメント内のパラメーター マーカーを、カーソルに渡されたデータと位置合わせすることが重要です。これを行わないと、「SQL ステートメントで一部のパラメータが使用されていません」というエラーが発生する可能性があります。
エラーが発生しました
次のコード スニペットを検討してください:
import mysql.connector Name = "James" Department = "Finance" StartYear = 2001 CurrentPos = 2001 Link = "" add_user = ("INSERT INTO DB.tbluser " "(username, department, startyear, currentpos, link) " "VALUES (%s, %s, %d, %d, %s)") data_user = (Name, Department, StartYear, CurrentPos, Link)
cursor.execute() メソッドを使用してこのコードを実行すると、「SQL ステートメントで一部のパラメーターが使用されていません」というエラーが発生します。 error.
分析
このエラーは、Start Year フィールドと CurrentPos フィールドのパラメーター マーカーが正しくないために発生します。 %d マーカーは整数に使用されますが、SQL ステートメントではすべてのパラメーターに %s マーカーが指定されています。
解決策
エラーを解決するには、%d マーカーを使用する必要があります。 %s マーカーに置き換えられます:
add_user = """INSERT INTO DB.tbluser (username, department, startyear, currentpos, link) VALUES (%s, %s, %s, %s, %s)"""
この変更により、すべてのパラメータがSQL ステートメントで適切に表現され、カーソルに渡されたデータに正しくバインドできます。
注
mysql.connector のパラメーター マーカーは %s に似ていますが、 Python の文字列フォーマットで使用されるため、2 つの構文は異なります。他のデータベース アダプタは、? などの異なるパラメータ マーカーを使用する場合があります。 oursql と sqlite3.
以上が私の Python MySQL コードで「SQL ステートメントで一部のパラメーターが使用されていません」というエラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。