该表foods包含一个字段food_names,其中列出了以空格分隔的产品名称的同义词,例如:beer пиво пивко пивасик,并且可以有一个或多个同义词。
我想选择表中的所有行,这些行的字段food_names至少包含查询中使用的一个词。那些。我想提出这样的请求
SELECT * FROM foods WHERE food_names LIKE '%beer%'结果是:
>>> 导入 sqlite3
>>> conn = sqlite3.connect("foods.db")
>>> c = conn.cursor()
>>> c.execute("SELECT * FROM foods WHERE food_names LIKE '%?%'", ("beer",))
追溯(最近一次通话):
文件“”,第 1 行,位于
c.execute("SELECT * FROM foods WHERE food_names LIKE '%?%'", ("beer",))
sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 0,并且提供了 1。
>>>
需要修复什么?
此选项将起作用:
如果问号?在查询文本中用引号引起来(如 '%?%'),解析器将其识别为问号本身,识别为字母,但不识别为参数替换点。