You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite用户名存在性校验函数异常排查与修正需求

问题与修复方案

问题分析

当前checkDB函数无法在用户名不存在时返回True,核心原因是SQL语句的参数绑定语法错误:代码中用[username]作为变量占位符,不符合SQLite的语法规范,数据库会把[username]当成固定字符串去匹配,而非传入的实际用户名参数,导致查询逻辑完全失效。

修复后的代码

def checkDB(username):
    # 使用SQLite标准的?占位符绑定参数,避免语法错误与SQL注入风险
    c.execute('select exists(select 1 from LoginCredentials where username = ?)', (username,))
    exists = c.fetchone()[0]  # 提取查询结果的布尔值
    if exists:
        print("False")
        return False  # 用户名已存在,返回False
    else:
        print("True")
        return True  # 用户名不存在,返回True

关键修改说明

  • 替换SQL占位符:将[username]改为SQLite标准的?,同时在execute方法的第二个参数中传入包含用户名的元组(username,),实现参数的正确传递。
  • 优化结果取值:c.fetchone()返回包含结果的元组,直接通过[0]提取布尔值,逻辑更直观。

内容的提问来源于stack exchange,提问作者Curtis Greenwood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:56:14