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

时间:2018-01-23 01:16:59

标签: python database sqlite python-3.6

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



    )""")

1 个答案:

答案 0 :(得分:0)

c.execute("SELECT * FROM login WHERE password =:password and user = :user" , {'password' : str(username_information) , 'user' : str(password_information)})

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