【发布时间】:2016-11-28 23:29:57
【问题描述】:
我正在尝试使用 pythonic 变量作为搜索词来搜索我的 SQLite3 数据库。我正在搜索的术语是数据库中单元格内容的一部分(例如,单元格中的 Smith:[Harrison GB, Smith JH])并且通常位于字符串的中间在一个单元格中。
我尝试将其编码如下:
def read_from_db():
c.execute("SELECT authors, year, title, abstract FROM usertable WHERE authors LIKE (?)",(var1,))
data = c.fetchall()
print(data)
for row in data:
searchlist.append(row)
var1="Smith"
read_from_db()
这应该会逐行显示结果。但是,当 var1 = "Smith" 时,我得到 0 个结果。当我将其值更改为“Harrison GB, Smith JH”时,我得到了所有结果。
当我尝试通过更改 SQLite3 执行查询来解决它时,我会产生错误。
ERROR
c.execute("SELECT authors, year, title, abstract FROM usertable WHERE authors LIKE '%?%'",(var1,))
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 1 supplied.
如果我将结尾更改为:$?$、(%?%) 等,我会遇到语法错误。我尝试过:
...authors="%?%"
但这也不起作用。 SO上有一些类似的问题,但它们并不能完全解决我的问题......
我在 Windows 10 上运行 Python 3.4 和 SQLite3。
【问题讨论】: