ホームページ >データベース >mysql チュートリアル >Python MySQL Update ステートメントが失敗するのはなぜですか?どうすれば修正できますか?

Python MySQL Update ステートメントが失敗するのはなぜですか?どうすれば修正できますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-08 13:26:02814ブラウズ

Why is My Python MySQL Update Statement Failing, and How Can I Fix It?

変数を使用した Python MySQL Update ステートメントの修正

Python update ステートメントを使用して MySQL レコードを更新しようとすると、エラーが発生する可能性があります。この問題に対処するには、構文を検証し、その適切な適用を確認することが重要です。

間違ったステートメント:

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

分析:

不適切な文字列の連結と欠落により、間違ったステートメントは失敗します。 「分」変数のプレースホルダー。このステートメントの正しい書き方は次のとおりです:

正しいステートメント:

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

代替構文:

または、文字列操作は可能です使用:

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 インジェクション攻撃に対して脆弱になるため、使用しないことを強くお勧めします。推奨されるアプローチは、正しいステートメントに示されているように、プレースホルダーを使用することです。

データベース互換性:

さらに、一部のデータベース バックエンドでは、文字列置換規則が異なる場合があります。たとえば、SQLite は「?」を使用します。プレースホルダーの「%s」の代わりに。

以上がPython MySQL Update ステートメントが失敗するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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