我想将用户输入与表中已有的数据进行比较?
到目前为止,我已经完成了以下代码
db_info = cursor.execute("SELECT * FROM usersTable");
if login_user in db_info:
game()
else:
messagebox.showerror("Invalid Details", "Inputted details are invalid!")
当我运行这个程序时,什么都没发生,所以我不确定哪里出了问题。有人有什么建议吗?
在数据库中查找用户名的常用方法是使用where子句:
db_info = cursor.execute("SELECT * FROM usersTable WHERE username=?",
[login_user]).fetchone()
if db_info is not None:
# check password
game()
else:
messagebox.showerror("Invalid Details", "Inputted details are invalid!")
db_info
是一个游标对象,因此此login_user in db_info
的计算结果总是为false。
从python sqlite 3 API接口doc:
要在执行SELECT语句后检索数据,您可以将光标视为迭代器,调用光标的fetchone((方法来检索单个匹配行,或者调用fetchall((来获取匹配行的列表。
文档中有很多示例将告诉您如何获取数据,以便构建正确的逻辑测试。