如何将由SQL值组成的列表与其他变量进行比较?

时间:2018-03-11 17:46:41

标签: python sql

我试图将变量与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)。

1 个答案:

答案 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