MySQL Connector无法处理参数

时间:2019-02-04 14:52:35

标签: python mysql mysql-connector-python

我正在尝试遍历数组并将每个元素插入表中。据我所知,我的语法是正确的,我直接从Microsoft Azure's documentation那里获取了这段代码。

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(...),然后失败。这是堆栈跟踪。

  

回溯(最近通话最近):     在第29行的文件“ test.py”中       cursor.execute(“插入测试(串行)值(%s)”,(“测试”))     执行中的文件“ C:\ Users \ AlexJ \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ mysql \ connector \ cursor_cext.py”,执行       准备= self._cnx.prepare_for_mysql(参数)     在prepare_for_mysql中的行538中的文件“ C:\ Users \ AlexJ \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ mysql \ connector \ connection_cext.py”       引发ValueError(“无法处理参数”)   ValueError:无法处理参数

2 个答案:

答案 0 :(得分:4)

尝试一下:

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查询和一个元组作为参数

答案 1 :(得分:0)

@lucas 的回答很好,但也许这对其他人有帮助,因为我认为更清洁

sql = "INSERT INTO your_db (your_table) VALUES (%s)"
val = [("data could be array")]
cursor = cnx.cursor()
cursor.execute(sql, val)
print("Inserted",cursor.rowcount,"row(s) of data.")
cnx.commit()
cnx.close()

Cz 这对我的目的很有用,可以输入多个数据。