2017-10-21 106 views
1
import sqlite3 
conn = sqlite3.connect('LeVinEmployee.db') 
profile = input("Are you a user? y/n: ") 
if profile == 'y': 
    login = input("Enter login name: ") 
    #passw = input("Enter password: ") 
    c = conn.cursor() 
    c.execute("SELECT * FROM Employee WHERE Email = '" + login + "'") 
    result = c.fetchone() 
    if result[0] == 1: 
     print(c.fetchall()) 
    else: 
     print("not") 

else: 
    print("You are not a user") 

我在这里要做的事情很简单。我正在尝试创建用户登录功能。如果用户键入'y',程序将简单地要求输入登录电子邮件。如果用户从数据库输入正确的电子邮件,则打印该客户信息如果错误,请打印“不”。我不确定我的代码有什么问题。有人能帮助我吗?Sqlite3数据库Python条件语句

回答

2

据我所知,email是一个独特的领域。而你的查询可能会返回一个记录或没有任何记录(None)。尝试

result = c.fetchone() 
if result: # result could be None or tuple (record) 
    print(result) 
else: 
    print("not") 

另外,参数通这样的方法是不正确的(不安全)

c.execute("SELECT * FROM Employee WHERE Email = '" + login + "'") 

使用

c.execute("SELECT * FROM Employee WHERE Email=?", login) 

的详细信息here

+0

它的工作原理。非常感谢。我假设如果我想检查密码,它会是一样的权利? –

+0

@Vincent Lynn不客气)是的,它会是一样的。类似于 'c.execute(“SELECT * FROM Employee WHERE Email =?AND pass =?”,login,pass)' – kvorobiev

+0

非常有帮助。谢谢 –