我试图在 Python 中形成一个经过清理的查询字符串以在 SQLite3 中使用。它需要采取最终形式:
SELECT * FROM Players WHERE PlayerName LIKE '%bob%'
...所以我可以运行模式搜索。
理想情况下,我想要一个 ? 在查询中,这样我就可以在运行查询时插入搜索字符串并防止发生Bobby Tables类型事件(我不必担心这个问题):
search_string = "bob"
query = "SELECT * FROM Players WHERE PlayerName LIKE '%?%'"
cur.execute(query, (search_string))
运行它给了我:
sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 0,并且提供了 3。
所以我很确定问题出在单引号、百分比和问号的使用上,但我相当卡住了——我无法形成查询,以便 python 看到它需要绑定。
解决此问题的最佳方法是什么,或者是否有更好的做法可以在 SQL 中为模式搜索形成经过清理的查询?
更新:最后一行是:
cur.execute(query, [('%' + search_string + '%')])