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

为什么cursor.fetchone()返回{'1':1}而非预期的表行数据?

问题原因

你的SQL查询语句指定的返回内容是常量1,而非用户表的字段,所以DictCursor会把常量名作为字典的键,常量值作为字典的值,最终返回{'1': 1}的结果,这是符合SQL执行逻辑的正常返回,不是扩展的问题。

解决方案

  • 如果你只是要验证该用户名和密码对应的用户是否存在,现有逻辑已经可以满足需求:只要cursor.fetchone()返回的结果不为空,就说明账号密码匹配,无需关心返回的字典内容。
  • 如果你需要获取匹配用户的具体字段信息,将SQL语句中的SELECT 1替换为你需要查询的字段列表即可,示例如下:
# 替换原有execute语句
cursor.execute('SELECT username, password FROM users WHERE username = %s AND password = %s', [name, password])
row = cursor.fetchone()
# 此时row就会返回类似 {'username': 'Bob', 'password': 'hunter2'} 的结构

安全提示

不要在数据库中存储明文密码,生产环境请使用bcrypt等专用哈希算法对密码加盐处理后再存储,校验时也只需比对密码哈希值即可,避免数据库泄露后用户明文密码直接外泄。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:54:03