您好 我正在尝试根据带有通配符的用户输入搜索SQlite表。我已经尝试了不同的方法,因为我无法让它发挥作用。 这是我尝试过的最后一件事,它实际上是我在这里找到的解决方案,但在python 3中可能已经改变了。
search = input("type name or partial name: ")
cur.execute("select * from contacts where name like ?",
('%'+search+'%'))
这会在那最后一行产生这个错误。
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 5 supplied.
我尝试了很多不同的事情,这让我发疯。我开始认为,如果不先将整个表格读成字符串,这是不可能的。
答案 0 :(得分:14)
您的问题似乎是您提供了一个字符串作为cur.execute
的第二个参数,当您可能想要提供包含该字符串的单元素元组时。
由于字符串是一个序列,字符串中的每个字符都将被解释为一个单独的参数,这就是您看到“不正确的绑定数量”错误的原因。
尝试:
cur.execute("select * from contacts where name like ?", ('%'+search+'%',))
注意元组中的逗号('%'+search+'%',)
。没有它,它不是一个元组,只是括号中的一个字符串。