【问题标题】:ValueError: parameters are of unsupported typeValueError:参数的类型不受支持
【发布时间】:2018-05-14 20:45:24
【问题描述】:

这是我的代码:

import sqlite3
connector = sqlite3.connect("Database_tester.db")
cursor = connector.cursor()
def Table_making():
    cursor.execute("CREATE TABLE IF NOT EXISTS Tester(Roll_numbers TEXT, Names TEXT)")
def data_entry():
    data = ((i,) for i in range(1, 11))
    inputy = ((input(x),) for x in range(1,11))
    cursor.executemany("INSERT INTO Tester (Roll_numbers, Names) VALUES (?, ?)", (data, inputy))
    connector.commit()
    cursor.close()
    connector.close()
Table_making()
data_entry()

我的代码不断给我这个错误:

ValueError: parameters are of unsupported type

我不知道这个错误是如何发生的,我想知道修复它的方法。

【问题讨论】:

标签: python python-3.x sqlite


【解决方案1】:

您可以从https://docs.python.org/2/library/sqlite3.html 的文档中看到cursor.executemany() 中的第二个参数是一个元组列表,其中每个元组是一行。您似乎正在传递一个元组的元组,其中每个内部元组都是一列。正如上面提到的汤姆使用zip 应该可以解决它。

【讨论】:

  • 使用 zip 并不能修复错误,但会给出一个新错误:sqlite3.ProgrammingError: Incorrect number of bindings provided。当前语句使用 2,并且提供了 1。
  • 你确定你实际上传递了一个元组列表,其中每个元组是一行吗? data = tuple(range(1, 11)) inputy = (input(x) for x in range(1,11)) cursor.executemany("INSERT INTO Tester (Roll_numbers, Names) VALUES (?, ?)", zip(data, inputy))
猜你喜欢
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
相关资源
最近更新 更多