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

Python 3.x 访问ID号数据库以根据输入的数字Python3进行验证,python-3.x,sqlite,Python 3.x,Sqlite,我试图让用户输入一个pin码(四个号码),然后数据库将通过查看客户ID来验证该pin码。目前,如果我让用户输入任何ID PIN,并对其进行编程,这样他们就可以输入任何ID供其访问,但我希望他们访问自己的帐户,这是可行的。因此,如果我输入Jeremy的唯一pin,它将提示我hello Jeremy消息。现在,如果我输入一个四位数的数字,什么都不会发生。到目前为止,我掌握的代码是: def entryID(): print("Hello") print() print()

我试图让用户输入一个pin码(四个号码),然后数据库将通过查看客户ID来验证该pin码。目前,如果我让用户输入任何ID PIN,并对其进行编程,这样他们就可以输入任何ID供其访问,但我希望他们访问自己的帐户,这是可行的。因此,如果我输入Jeremy的唯一pin,它将提示我hello 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")
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!")

非常感谢你的帮助!很抱歉要求进一步的帮助,但是当我知道使用两个[]时,第一个括号将是0来表示单数行,然后第二个括号将是0-3?这是我的理解,但我得到了一个“元组索引超出范围”的错误,正如我所说,
userid
是一个行列表。因此
userIDs[n]
返回第n行。