ホームページ >データベース >mysql チュートリアル >変数を含む Python MYSQL UPDATE ステートメントが失敗するのはなぜですか?
変数を使用した 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 サイトの他の関連記事を参照してください。