首页 > 解决方案 > 为什么执行插入查询时出现错误

问题描述

在执行以下代码时,我收到错误

代码:

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="root",
  database="proteinsystem"
)

mycursor = mydb.cursor()
name = "test",
surname = "tester",
val1 = 0,
val2 = 0,
val3 = 332,
val4 = 62,
val5 = 181,
val6 = 0,
val7 = 125,
val8 = 490,
mycursor.execute('INSERT INTO ppi2 (name, surname, val1, val2, val3, val4, val5, val6, val7, val8) VALUES (%s,%s,%d,%d,%d,%d,%d,%d,%d,%d)', ('name', 'surname', 'val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7', 'val8'))
mydb.commit()

print(mycursor.rowcount, "record inserted.")

错误:

cursor.py”,第 561 行,在执行“SQL 语句中没有使用所有参数”)mysql.connector.errors.ProgrammingError:SQL 语句中没有使用所有参数

标签: pythonmysql

解决方案


您将变量名作为字符串而不是变量名本身传递。此外,使用的参数标记必须都是 %s。

mycursor.execute(
    ('INSERT INTO ppi2 (name, surname, val1, val2, val3, val4, val5, val6, val7, val8)',
    'VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'),
    (name, surname, val1, val2, val3, val4, val5, val6, val7, val8)
)

您可以参考MySQLCursor.execute()以获取有关如何参数化查询的更多信息。


推荐阅读