为什么 .fetchall() 方法在这种情况下返回空列表



基本上问题是 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)})

这行代码在这里。您将用户信息放在应该有密码信息的地方,反之亦然

最新更新