ホームページ >データベース >mysql チュートリアル >変数を含む Python MYSQL UPDATE ステートメントが失敗するのはなぜですか?

変数を含む Python MYSQL UPDATE ステートメントが失敗するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-08 17:01:02963ブラウズ

Why Is My Python MYSQL UPDATE Statement with Variables Failing?

変数を使用した Python MYSQL UPDATE ステートメントのトラブルシューティング

Python で変数を使用した MYSQL UPDATE ステートメントを作成する場合、その正確性を確認することが重要です。よく発生するエラーの 1 つは次のとおりです:

cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)   

どこで間違ったのですか?

問題は、変数がステートメントに挿入される方法にあります。このスニペットは、正しいメソッドを使用する代わりに、単に文字列と変数を連結しますが、これは MYSQL ではサポートされていません。

正しいアプローチ

エラーを修正するには、以下が必要です。パラメーター化されたクエリを使用します。変数はプレースホルダーで表され、別の引数として渡されます。正しいアプローチは次のとおりです:

cursor.execute ("""
   UPDATE tblTableName
   SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s
   WHERE Server=%s
""", (Year, Month, Day, Hour, Minute, ServerID))

代替方法

代わりに、基本的な文字列操作を使用することもできますが、SQL インジェクションの脆弱性があるため推奨されません:

cursor.execute ("UPDATE tblTableName SET Year=%s, Month=%s, Day=%s, Hour=%s, Minute=%s WHERE Server='%s' " % (Year, Month, Day, Hour, Minute, ServerID))

追加メモ

データベース バックエンドが異なれば、文字列置換の規則も異なる場合があることに注意してください。たとえば、SQLite は更新クエリの文字列値に一重引用符を使用します。

以上が変数を含む Python MYSQL UPDATE ステートメントが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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