【问题标题】:TypeError: 'NoneType' object is not iterable. cur.fetchone() stops the while cicleTypeError:“NoneType”对象不可迭代。 cur.fetchone() 停止整个循环
【发布时间】:2013-12-15 04:22:22
【问题描述】:

好的,所以在这里我基本上是在尝试为我的程序创建一个登录选项,它会在其中查询数据库以查看数据是否正确。在我引入不在数据库中的登录名之前,它工作正常。无论如何,即使在 cur.fetchone() 给出了没有任何东西的错误之后,我仍然可以让 while 工作吗?

login= False    
print "*.*.*.*.*.*.*LOGIN*.*.*.*.*.*.*"
while login == False:
    login1=input("Id:")
    login1pw=raw_input("Password:")
    cur.execute("select id_func from func where (id_func = %s and function = 'admin');", (login1,))
    login2, = cur.fetchone()        
    cur.execute("select pw from func where id_func = %s", (login1,))
    login2pw, = cur.fetchone()
    if (login1 == login2 and login1pw == login2pw):
        login = True
        print "Login successful"

我收到此错误:

TypeError: 'NoneType' 对象不可迭代

提前致谢!

【问题讨论】:

    标签: python sql nonetype


    【解决方案1】:

    您可以添加:

    r = cur.fetchone ()
    if not r:
        print ('Login failed')
        continue
    login2, = r
    ....
    

    第二次获取相同。

    【讨论】:

    • 但是现在它不会测试输入的密码是否与数据库的密码相同。它从来没有真正运行过这段代码: if (login1 == login2 and login1pw == login2pw): login = True print "Login successful"
    • 没关系,我只需要添加一个不同的变量和 cur.fetchone。对于那个很抱歉。效果很好!
    猜你喜欢
    • 2012-08-25
    • 1970-01-01
    • 2017-08-29
    • 2016-08-30
    • 2014-11-21
    • 1970-01-01
    相关资源
    最近更新 更多