ホームページ >データベース >mysql チュートリアル >私の Python MySQL コードで「SQL ステートメントで一部のパラメーターが使用されていません」というエラーがスローされるのはなぜですか?

私の Python MySQL コードで「SQL ステートメントで一部のパラメーターが使用されていません」というエラーがスローされるのはなぜですか?

DDD
DDDオリジナル
2025-01-06 20:27:43881ブラウズ

Why Does My Python MySQL Code Throw a

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

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