web-dev-qa-db-ja.com

MySQLConnectorはパラメータを処理できませんでした

配列をループして、各要素をテーブルに挿入しようとしています。私の構文が正しいことがわかる限り、このコードは Microsoft Azureのドキュメント から直接取得しました。

_try:
   conn = mysql.connector.connect(**config)
   print("Connection established")
except mysql.connector.Error as err:
  if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with the user name or password")
  Elif err.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print(err)
else:
  cursor = conn.cursor()
data = ['1','2','3','4','5']


for x in data:
   cursor.execute("INSERT INTO test (serial) VALUES (%s)",(x))
   print("Inserted",cursor.rowcount,"row(s) of data.")

conn.commit()
cursor.close()
conn.close()
print("Done.")
_

実行すると、これはcursor.execute(...)に到達し、失敗します。これがスタックトレースです。

トレースバック(最後の最後の呼び出し):cursor.execute( "INSERT INTO test(serial)VALUES(%s)"、( "test"))ファイル "C:\ Users \内のファイル" test.py "、行29 AlexJ\AppData\Local\Programs\Python\Python37\lib\site-packages\mysql\connector\cursor_cext.py "、248行目、実行準備済み= self._cnx.prepare_for_mysql(params)ファイル" C:\ Users\AlexJ\AppData\Local\Programs\Python\Python37\lib\site-packages\mysql\connector\connection_cext.py "、行538、prepare_for_mysqlでValueError("パラメータを処理できませんでした ")ValueError:パラメータを処理できませんでした

2
ajjohnson190

これを試して:

for x in data:
    value = 'test'
    query = "INSERT INTO test (serial) VALUES %s"
    cursor.execute(query,(value,))
    print("Inserted",cursor.rowcount,"row(s) of data.")

Mysqlモジュールを使用しているので、cursor.executeパラメータとしてSQLクエリとタプルが必要です

14
Lucas Hort