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