数据库查询结果仅返回[],登录验证代码调试求助
解决数据库查询返回空列表的问题
排查方向及解决建议:
- 处理输入字符串首尾空格:用户输入的用户名/密码可能意外带有首尾空格,而数据库存储的记录无空格。先对输入做去空格处理:
username = str(user_entry.get()).strip() passvordiukas = str(pass_entry.get()).strip() - 直接验证数据库数据:用SQL工具(如SQLite Studio、Navicat)执行手动拼接的查询语句,填入
print输出的用户名和密码,看是否能查到结果。示例SQL:
若工具中也查不到,说明数据库无匹配记录;若能查到,再排查代码参数传递问题。SELECT * FROM "Login_Info" WHERE "Username" = '你的用户名' AND "Password" = '你的密码'; - 检查大小写匹配:部分数据库(如PostgreSQL)对字符串匹配大小写敏感,确认数据库存储的用户名/密码大小写与输入完全一致。
- 调试查询语句(仅用于排查):临时拼接SQL语句并打印,验证参数是否正确带入:
将打印的SQL复制到数据库工具执行,确认语句逻辑是否正确。query = f'SELECT * FROM "Login_Info" WHERE "Username" = "{username}" AND "Password" = "{passvordiukas}"' print(query) cur.execute(query) result = cur.fetchall() - 确认数据库连接指向:若使用SQLite,打印当前连接的数据库路径,避免连接到错误的数据库文件:
print(conn.execute("PRAGMA database_list").fetchall())
内容的提问来源于stack exchange,提问作者Slazicity
相关产品推荐
相关产品推荐

