Python SQLite中如何向查询语句传递变量
解决SQLite查询返回空的问题
嘿,我明白你遇到的问题啦!你的代码没报错但打印空结果,核心原因是你直接打印了SQLite的游标对象,而没有真正提取查询到的数据。
问题分析
当你调用 sql.execute() 时,它返回的是一个游标(cursor)对象——这个对象本身并不是查询结果,只是用来遍历结果集的工具。直接打印游标当然看不到实际的数据啦。
修正后的代码
你需要使用游标提供的方法来获取结果,比如 fetchone()(获取单条结果)、fetchall()(获取所有结果),针对你的单条查询场景,用 fetchone() 最合适:
find_domain = 'domain.com' def searchdomain(locate): # 执行查询,得到游标对象 cursor = sql.execute("SELECT * FROM blocked_domains WHERE name = ?;",(locate,)) # 提取第一行查询结果 row = cursor.fetchone() # 打印实际结果 print(row) searchdomain(find_domain)
额外检查点
如果修改后还是返回 None,那大概率是数据库里没有匹配的记录,可以做这些检查:
- 确认
blocked_domains表中确实存在name为domain.com的行 - 检查大小写、空格等细节,SQLite默认是大小写敏感的(取决于你的表定义)
- 可以先执行一条
SELECT * FROM blocked_domains;来查看表中所有数据,确认数据是否正确
内容的提问来源于stack exchange,提问作者James Middleton




