import sqlite3
username=input(print("Username?"))
password=input(print("Password?"))
connection= sqlite3.connect("Logininfo.db")
c = connection.cursor()
IDuser=c.execute('SELECT Username, Password FROM LoginInfo WHERE Username= ? AND Password= ?', (username,password)).fetchone()
print(IDuser)
应该从此代码返回的数据是" Hello1"和"密码1" (没有引号)。相反,它输出"(' Hello1','密码1')"。
有几个问题,为什么要这样做?
如何在没有括号和引号的情况下检索此数据,即"(' Hello1',"将成为" Hello1"
代码还打印出"无"在询问用户名和密码之前,为什么要这样做以及如何解决?
答案 0 :(得分:1)
fetchone()返回一个“元组”或查询集“object”的结果,你可以像数组一样访问各个值
尝试打印(IDuser [0]),它将打印“Hello1”。
请参阅https://docs.python.org/2/library/sqlite3.html并搜索fetchone()电话以获取更多信息。
答案 1 :(得分:1)
要回答你的第一个问题,引号会告诉你它是一个字符串。它们实际上不是您的用户名或密码的一部分,所以它应该不是问题。同样,括号是告诉你这是一个序列(特别是一个元组)。 Python必须为您提供两个字符串,这是通常的方式。如果这对您造成问题,那么您需要解释原因。
要回答您的第二个问题,我会打印None
,因为您在print()
函数中调用了input()
。 print()
的返回值为None
。打印提示已经是input()
的组成部分,因此没有必要这样做。只需input("Username?")
即可。