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