Python + sqlite:带通配符的LIKE查询

时间:2010-12-10 14:05:25

标签: python database sqlite

您好 我正在尝试根据带有通配符的用户输入搜索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.

我尝试了很多不同的事情,这让我发疯。我开始认为,如果不先将整个表格读成字符串,这是不可能的。

1 个答案:

答案 0 :(得分:14)

您的问题似乎是您提供了一个字符串作为cur.execute的第二个参数,当您可能想要提供包含该字符串的单元素元组时。

由于字符串是一个序列,字符串中的每个字符都将被解释为一个单独的参数,这就是您看到“不正确的绑定数量”错误的原因。

尝试:

cur.execute("select * from contacts where name like ?", ('%'+search+'%',))

注意元组中的逗号('%'+search+'%',)。没有它,它不是一个元组,只是括号中的一个字符串。