我试图将变量与SQL表中的值进行比较。但是,我有很多问题,我不明白为什么。
我已经"已导入" SQL表中的值,并使用代码将它们放入列表中:
cur= con.cursor()
query= 'SELECT Username, Password FROM dbo.account_table'
cur.execute(query)
account_list = []
for row in cur.fetchall():
account_list.append(row)
打印该列表,即可:
[('MTATQuestion', 'ComputerScience'), ('HarshMarker', 'harshmarker'), ('GuestAccount1', 'GuestPassword1'), ('GuestAccount2', 'GuestPassword2'), ('GuestAccount3', 'GuestPassword3')]
我已经完成了所有这些,但问题就在于此处。我想检查用户输入是否是列表中的这些值之一,如果是,则打印(" Access Accepted")。我使用的代码是:
UsernameInput = input("Enter your username: ")
PasswordInput = input("Enter your password: ")
for i in range(len(account_list)):
if (UsernameInput, PasswordInput) == account_list[i]:
print("Access Accepted")
但是,当我输入正确的信息时,它没有做任何事情。我认为代码不起作用,但是我使用python中的列表创建了一个测试程序,使用相同的代码,并且它运行良好。
我不确定这种方法是否适用于SQL中的列表,或者我是否只是忽略了一些事情。任何帮助将不胜感激,对于这个特别冗长的问题"抱歉。
编辑:如果有帮助,问题的原因似乎是(UsernameInput,PasswordInput)没有被识别为列表中的值(account_list)。
答案 0 :(得分:0)
而不是
if (UsernameInput, PasswordInput) in account_list:
print("Access Accepted")
删除for循环并尝试更简洁的表单
>>> accounts = [('Demo', 'demo'), ('Mary', 'butterfly')]
>>> UsernameInput = 'Mary'
>>> PasswordInput = 'butterfly'
>>> if (UsernameInput, PasswordInput) in accounts:
... print('Access accepted')
...
Access accepted
编辑:
该代码必须工作,请参阅下面的交互式会话:
let data = json.data(using: String.Encoding.utf8)!
let wrapper = JSONSerialization.JSONObjectWithData(data, options:nil, error:nil) as NSDictionary