You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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 表中确实存在 namedomain.com 的行
  • 检查大小写、空格等细节,SQLite默认是大小写敏感的(取决于你的表定义)
  • 可以先执行一条 SELECT * FROM blocked_domains; 来查看表中所有数据,确认数据是否正确

内容的提问来源于stack exchange,提问作者James Middleton

火山引擎 最新活动