搜索sqlite3数据库时的Python错误

标签 python sqlite

#!/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/

相关文章:

python - 在 python 中解析字符串

python - python sqlite3 是否在交互模式下释放仅内存数据库?

c# - 我可以将对象列表存储到SQLite而不是拆分列表并单独添加对象吗?

python - AWS Lambda 函数无法连接到 S3 并查询 SQLite 数据库文件

bash - Bash:如何在sqlite3中插入具有特殊字符的文本?

python - 为什么 "getcontext().prec = 2"没有实际设置它,以便 Decimal() 的使用达到两位小数?

python - 在Python中计算jpeg图像的宽度和高度的最简单方法

python - 仅在数据框中提取最小值

java.sql.SQLException : ResultSet closed on sqlite 异常

python - 可靠高效的 Linux 键值数据库?