cur.fetchone()[0]突然变成了一个Nonetype



Im使用SQLite将登录系统作为数据库。

def loginfunction(self):
user = self.emailfield.text()
password = self.passwordfield.text()
if len(user)==0 or len(password)==0:
self.error.setText("Please input all fields.")
else:
conn = sqlite3.connect("shop_data.db")
cur = conn.cursor()
query = 'SELECT password FROM login_info WHERE username =''+user+"'"
cur.execute(query)
result_pass = cur.fetchone()[0]
if result_pass == password:
print("Successfully logged in.")
self.error.setText("")
else:
self.error.setText("Invalid username or password")

当我运行它时,如果密码与数据库中的用户名不匹配,它就会工作,但如果我键入了错误的用户名,应用程序就会关闭并打印出这个

main.py", line 38, in loginfunction
result_pass = cur.fetchone()[0]
TypeError: 'NoneType' object is not subscriptable

以下是SQLite日志所说的+数据库看起来像什么数据库

fetchone执行

获取查询结果集的下一行,返回单个序列或None

对于任何

'SELECT password FROM login_info WHERE username =''+user+"'"

如果用户名列中不存在用户提供的用户名,则数据中没有匹配的行。你应该做一些类似的事情

query_result = cur.fetchone()
if result_pass is None:
print("Username with given name is not known")
# action to undertake in such case
result_pass = query_result[0]

然后继续以前的

最新更新