Python からの MySQL クエリの % のエスケープ
Python の MySQLdb ライブラリを使用すると、実行中に「ValueError: unsupported formatcharacter」例外が発生します。 「%」文字を含むクエリはイライラする可能性があります。これは、MySQL が「%」文字をワイルドカードとして扱い、リテラルではなくクエリの一部として解釈するためです。
この問題を解決するには、ドキュメントでは、リテラルの「%」記号をエスケープすることを推奨しています。クエリ文字列がexecute()に渡されます。二重 % (%%) を使用すると、MySQL は「%」をワイルドカードではなくリテラル文字として認識します。
たとえば、元の質問のクエリは次のように変更できます。
query = """SELECT DATE_FORMAT(date_time, '%%Y-%%m') AS dd FROM some_table WHERE some_col = %s AND other_col = %s;""" cur.execute(query, (pram1, pram2))
リテラルの "%" 記号をエスケープすることで、MySQL は "Y" と "m" を DATE_FORMAT 文字列内の特定の文字として認識し、エラーが回避されます。
以上がPython から MySQL クエリの「%」文字をエスケープする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。