2012-03-21 16 views
0
conn = MySQLdb.connect (host = "localhost", user="root", passwd="xxxx", db="xxxxx") 
    cursor = conn.cursor() 
    cursor.execute ("SELECT * FROM pin WHERE active=1") 
    while (1): 
     row = cursor.fetchone() 
     st = str(row[2]) 
     pin = str(row[1]) 
     order = str(st)+str(pin) 
     if row == None: 
      break 
     sendSerial(order) 
conn.close() 

Почему st = str (row [2]) становится ошибкой? Как извлечь строки из базы данных в переменную?Python Mysql TypeError: объект «NoneType» не является индексом

Благодарим вас за ответ.

+0

не должен чек ', если строка == None:' не быть перед ' st = str (строка [2]) '?? – MByD

+0

Проверка должна быть 'if row is None ', а не' if row == None'. – chepner

+0

Спасибо, это отлично работает – Varanka

ответ

4

st = str(row[2]) является ошибкой, потому что cursor.fetchone() возвращает None, когда строк больше нет.

Fix с помощью одного из этих подходов:

row = cursor.fetchone() 
while row: 
    do_stuff() 
    row = cursor.fetchone() 

или

for row in cursor: 
    do_stuff() 

или

while True: 
    row = cursor.fetchone() 
    if row is None: # better: if not row 
      break 
    do_stuff() 
+0

Что такое do_stuff()? модуль? – Varanka

+0

'do_stuff' - ничто. Это всего лишь способ сказать: «Остальная часть вашего кода идет здесь». –

+0

О, я вижу, спасибо – Varanka

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