错误绑定参数 0: 可能是不支持的类型

新手上路,请多包涵

我似乎无法弄清楚我的代码有什么问题,但我不断收到:

 error "binding parameter 0 - probably unsupported type".

这是我的代码:

 last = 'EBERT'

sakila = connect("sakila.db")
res = sakila.execute("SELECT first_name, last_name FROM customer WHERE last_name = ?",[(last,)])

for row in res:
    print(row)

当我在查询中找到“ EBERT ”并且未设置为变量时,它工作正常,所以我知道这是元组语法或其他问题。我试过没有括号,第二个变量 first_name ,有和没有单独定义的游标,基本上我能想到的每一种方法,我已经研究了几个小时但没有得到任何结果,所以任何帮助将不胜感激。

原文由 user3345626 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

嵌套列表、元组用于 executemany ,而不是 execute

传递包含参数的平面列表(或元组)。

 res = sakila.execute(
    "SELECT first_name, last_name FROM customer WHERE last_name = ?",
    (last,))

或者

res = sakila.execute(
    "SELECT first_name, last_name FROM customer WHERE last_name = ?",
    [last])

原文由 falsetru 发布,翻译遵循 CC BY-SA 3.0 许可协议

我遇到了同样的错误,整理出我的数据类型不匹配。然后我将它转换成字符串;

 cursor.execute('''INSERT INTO employees VALUES (?);''', (str(data[0]), ))

它工作正常。希望这对某人有帮助。

原文由 Anum Sheraz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题