mysql.connector
pyCharmで実行してPython 2.7を使用しています
こことここに示すようなパラメーター化されたクエリを使用する必要があります
これらの例を考えるとcursor.execute("SELECT * FROM automatedReports WHERE pythonFunctionName = %s", (function_name))
、以下のように動作するはずです。
ただし、pyCharm でこの行を記述すると、次のエラーが発生します。
検査は次のように述べています。
コードを実行すると、次のエラーが発生します。
SQL 構文にエラーがあります。1 行目の '%s' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
完全なコードは次のとおりです。
class DatabaseManager():
def get_report_settings_for_function_named(self, function_name):
"""
Get the settings for a given report from the database based on the name of the function that was called
to process the report
This is how we get the, email subject and email addresses to send the report to
:param function_name: The name of the function that was called to process the report
:type function_name: str.
:returns: array -- the settings row from the database.
"""
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor(dictionary=True)
cursor.execute("SELECT * FROM automatedReports WHERE pythonFunctionName = %s", (function_name))
row = cursor.fetchone()
cursor.close()
cnx.close()
print cursor.statement
return row
print DatabaseManager().get_report_settings_for_function_named('process_elation_credit_report')
ここで何が間違っていますか?これは古い構文ですか?私はそうは思わないでしょう...
クエリ文字列に値を入力すると、すべて正常に機能しますが、パラメーターを使用できないことに注意してください。