2013-07-23 14 views
1

У меня есть следующий код:TypeError: объект «NoneType» не имеет атрибута «__getitem__», тогда как cur.fetchone не является Ни

cur1.execute("SELECT * FROM consommation WHERE zone=? AND date=?",(zone,date_p)) 
if cur1.fetchone() is not None: 
    abcisses+=(cur1.fetchone()[0][11:13]+'h',) 

, но когда я запускаю его у меня ошибка: TypeError: 'NoneType' object has no attribute '__getitem__', в то время как cur1. fetchone не пуст. Поэтому я не понимаю, почему это не работает. Есть кто-то, кто знает, почему?

ответ

5

fetchone извлекает данные и изменяет состояние из cursor объекта, т.е. если бы была только одна строка для выборки, следующий вызов fetchone будет возвращать None.

Попробуйте следующее:

cur1.execute("SELECT * FROM consommation WHERE zone=? AND date=?", (zone, date_p)) 
res = cur1.fetchone() 
if res: 
    abcisses += (res[0][11:13] + 'h',) 
+0

Спасибо за ответ. Но у меня все еще есть ошибка: 'AttributeError: 'tuple' объект не имеет атрибута 'fetchone''. Ты знаешь почему ? EDIT: хорошо, это моя вина. Ваш ответ хороший, спасибо большое. :) –

+0

@ Шан-х. Вероятно, вы кое-что сделали. Не могли бы вы обновить свой вопрос с помощью нового кода/traceback? –

+0

См. Мое редактирование. Теперь все в порядке, спасибо. –

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