【问题标题】:Python+sqlite: the LIKE query with wildcardsPython+sqlite:带通配符的 LIKE 查询
【发布时间】:2021-06-23 15:56:13
【问题描述】:

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

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

【问题讨论】:

    标签: python database sqlite


    【解决方案1】:

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

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

    试试:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2021-12-22
      • 1970-01-01
      相关资源
      最近更新 更多