基本上问题是 fetch all 方法返回一个空列表,并且我在此方法外部检查了我输入的值是否ronaldb
123456
目前居住在login
TABLE
内,他们确实如此,所以我相信我没有看到的signin_check
方法有问题。我在网站上看到了其他类似的问题,但没有一个能解决我的问题。
conn = sqlite3.connect('login.db')
c = conn.cursor()
def signin_check():
global obj
username_information = obj.username.get()
password_information = obj.password.get()
c.execute("SELECT * FROM login WHERE password =:password and user = :user" , {'password' : str(username_information) , 'user' : str(password_information)})
if c.fetchall() == []:
print (False)
else:
print(True)
我用来检查内容的代码
c.execute("SELECT * FROM login WHERE user = :user" , {'password' : '123456' , 'user' : 'ronaldb'})
print(c.fetchall())
结果
[('qeqwe', 'qweqwewq', 'ronaldb', '123456', 'multiple', 'Dr.', 'ee')]
这是我用来创建表的代码
c.execute("""CREATE TABLE login (
first text,
last text,
user text ,
password text,
accounttype text,
title text,
buisness text
)""")
c.execute("SELECT * FROM login WHERE password =:password and user = :user" , {'password' : str(username_information) , 'user' : str(password_information)})
这行代码在这里。您将用户信息放在应该有密码信息的地方,反之亦然