Python+sqlite:带通配符的LIKE查询
你好!我正在尝试根据用户输入和通配符来搜索一个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 个回答
19
你的问题似乎是你在调用 cur.execute
的时候,把一个字符串当作第二个参数传了进去,其实你应该传的是一个只包含这个字符串的元组。
因为字符串是一个字符序列,所以字符串里的每个字符都会被当作一个单独的参数来处理,这就是你看到“绑定数量不正确”的错误原因。
你可以试试:
cur.execute("select * from contacts where name like ?", ('%'+search+'%',))
注意元组里的逗号,('%'+search+'%',)
。如果没有这个逗号,它就不是元组了,而只是一个带括号的字符串。