SQLite数据库查询返回错误的结果

时间:2017-11-29 21:39:56

标签: python-3.x sqlite

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"

代码还打印出"无"在询问用户名和密码之前,为什么要这样做以及如何解决?

2 个答案:

答案 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?")即可。