#!/usr/bin/python
import sqlite3
conn = sqlite3.connect("/home/michael/Dropbox/lagniappe/database.db")
cursor = conn.cursor()
query = raw_input('Search for a title:')
cursor.execute("SELECT * FROM nerd WHERE title LIKE '%?%';", query)
print cursor.fetchall()
返回错误:
michael@piplup:~$ python sqlite.py
Search for a title:test
Traceback (most recent call last):
File "sqlite.py", line 10, in <module>
cursor.execute("SELECT * FROM nerd WHERE title LIKE '%?%';", query)
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 0, and there are 4 supplied.
我想让它做的就是将从数据库接收到的数据打印到控制台。最终我想操纵这些数据,但我只需要查询正常工作。
最佳答案
这里有两个问题。首先,参数应该是一个序列——Python 将其解释为一个包含四个字符的列表,而不是一个包含四个字符的字符串。
其次,占位符必须是整个元素,而不是引号。您需要自己添加百分比字符:
query = raw_input('Search for a title:')
query = '%' + query + '%'
cursor.execute("SELECT * FROM nerd WHERE title LIKE ?", (query,))
关于搜索sqlite3数据库时的Python错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14844067/