【问题标题】:Python: Not all parameters were used in the SQL statementPython:并非所有参数都在 SQL 语句中使用
【发布时间】:2020-10-12 14:12:21
【问题描述】:

我无法在 mysql 数据库中插入字符串列表。我不断收到错误“并非所有参数都在 SQL 语句中使用”。我做错了什么吗

rowval = ['1.0', '2.0','1.5', '1.6', '', '.85']
query_string = 'INSERT INTO table(tech) VALUES (%s)'
cursor.execute(query_string, rowval)
cursor.close()
database.commit()

【问题讨论】:

  • 您只有一个占位符,但有六个值。你想executemany吗?
  • 嗨@jonrsharpe,也尝试执行很多,但仍然得到相同的错误:(

标签: python mysql


【解决方案1】:

根据article,您可以将多个列表作为多行插入 MySQL:

rowval = ['1.0', '2.0','1.5', '1.6', '', '.85']
data = list(map(lambda x: [x], rowval))
print(data)
"""
should be [['1.0'], ['2.0'], ['1.5'], ['1.6'], [''], ['.85']]
"""

query_string = 'INSERT INTO table(tech) VALUES (%s)'
cursor.execute(query_string, data)
cursor.close()
database.commit()

【讨论】:

    【解决方案2】:

    既然你有rowval = ['1.0', '2.0','1.5', '1.6', '', '.85'],你的query_string应该有这样的东西:

    VALUES (%s, %s, %s, %s, %s, %s)
    

    或者根据您设置数据库的方式,您可以执行以下操作:

    query_string = 'INSERT INTO database.<TABLE_NAME> (parameter1, parameter2, parameter3, parameter3, parameter4, parameter5, parameter6) VALUES (%s, %s, %s, %s, %s, %s)'
    

    或者在你的情况下,如果你不想只插入一列,你会这样做 它是这样的:

    value_for_tech = <SOME_VALUE>
    query_string = 'INSERT INTO DB.<TABLE_NAME> (tech) VALUES (%s)'
    cursor.execute(query_string, value_for_tech)
    

    遵循sql查询构建规则:

    INSERT INTO table_name (column1, column2, column3, ...)
    VALUES (value1, value2, value3, ...);
    

    【讨论】:

    • 但我不知道我可以拥有多少价值,这可以改变,所以我该如何管理?
    • @edcoder 您的表tech 看起来如何,您有架构吗?例如“.85”代表什么?
    • tech(varchar(10) 是我表中的一列。所以我试图将这些值插入到列中
    • statvalues 是表名
    • 嗨@cheshire,所以问题是因为空白值。删除空白值后,我就能够解决问题
    【解决方案3】:

    我能够通过删除列表中的空白值来解决此问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 2020-12-12
      • 1970-01-01
      • 2019-09-09
      • 2017-07-25
      • 2021-03-03
      相关资源
      最近更新 更多