访问ID号数据库以根据输入的数字Python3进行验证

时间:2017-05-21 14:05:42

标签: python-3.x sqlite

我试图让用户输入一个密码(四个数字),然后数据库将通过查看客户ID进行验证。目前,如果我让用户输入任何ID引脚并对其进行编程以便他们可以输入任何ID以供他们访问,那么它是有效的,但我希望他们访问自己的帐户。因此,如果我输入Jeremy的独特别针,它会提示我一个你好的Jeremy信息。目前,如果我输入一个四位数字,就不会发生任何事情。我到目前为止的代码是:

def entryID():
    print("Hello")
    print()
    print()
    print("Welcome to the Northern Frock ATM system")
    time.sleep(2)
    print("In order for you to access the machine, you must enter a correct PIN")
    with sqlite3.connect("ATM.db") as db:
        cursor = db.cursor()
        cursor.execute("select CustomerID from ATM")
        userIDs = cursor.fetchall()
    print(userIDs)
    UserID = input("Please enter your Customer ID. If you want to quit, type in 99999\n")
    if UserID == userIDs[0]:
        print('Hello smack')
    elif UserID == userIDs[1]:
        print("Hello joe")

    elif UserID == userIDs[2]:
        print("Hellow Snow")

    elif UserID == userIDs[3]:
        print("Hellow Moe")

1 个答案:

答案 0 :(得分:1)

fetchall()返回行列表。每行都是列值列表。

所以userIDs[0]是第一行,即类似(1234,)

要访问实际值,您必须从行中提取第一列:

if UserID == userIDs[0][0]:
    ...

请注意,除非您使用ORDER BY,否则查询可以按随机顺序返回结果。

最好将客户名称存储在数据库中,并只加载您想要的名称:

cursor.execute('SELECT Name FROM ATM WHERE CustomerID = ?', [UserID])
for (name,) in cursor:
    print("Hello " + name)
else:
    print("wrong!")