2013-12-14 28 views
0

Итак, вот, я в основном пытаюсь сделать параметр входа в мою программу, где он запрашивает базу данных, чтобы увидеть, правильно ли данные. Он отлично работает, пока я не вводим логин, которого нет в базе данных. В любом случае, я могу заставить работать, даже после того, как cur.fetchone() дает ошибку, чтобы не что-то не вписывать?TypeError: объект «NoneType» не является итерируемым. cur.fetchone() останавливает while cicle

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 не итерацию

Заранее спасибо!

ответ

0

Вы можете добавить:

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

же для второй выборки.

+0

Спасибо, человек! Это сработало! :) – Varzoc

+0

Но теперь он не проверяет, является ли пароль с входа тем же, что и пароль из базы данных. Он никогда не запускает этот код: if (login1 == login2 и login1pw == login2pw): login = True print "Login successful" – Varzoc

+0

Никогда, мне просто нужно было добавить другую переменную и cur.fetchone. Извини за это. Все прошло отлично! – Varzoc

Смежные вопросы