我试图让用户输入一个密码(四个数字),然后数据库将通过查看客户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")
答案 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!")