2015-12-16 8 views
0

Я пытался запустить этот код:Python --- TypeError: объект 'NoneType' не имеет атрибута '__getitem__'

Вот то, что я делаю, что улучшить себя ...

import sqlite3 as sq 


def add_user(username, passwd): 
    database = sq.connect("database.db") 
    cursor = database.cursor() 
    cursor.execute("""insert into maintable values (?, ?, ?)""", 
        (username, passwd, "")) 
    database.commit() 


def add_lesson(username, lesson): 
    database = sq.connect("database.db") 
    cursor = database.cursor() 
    cursor.execute("""select * from maintable where kullad=?""", (username,)) 
    if cursor.fetchone()[2] != "": 
     lessons_dict = {lesson: 0} 
     cursor.execute(
      """update maintable set lessons=? where kullad=?""", (lessons_dict, username,)) 
     database.commit() 

    else: 
     cursor.fetchone()[2][lesson] = 0 
     cursor.execute(
      """update maintable set lessons=? where kullad=?""", (lessons_dict, username,)) 
     database.commit() 

add_lesson("user", "lesson1") 

Когда я пытаюсь запустить это я получаю эту ошибку:


Traceback (most recent call last): 
    File "main.py", line 29, in <module> 
    add_lesson("user", "lesson1") 
    File "main.py", line 24, in add_lesson 
    cursor.fetchone()[2][lesson] = 0 
TypeError: 'NoneType' object has no attribute '__getitem__' 

+2

ваш 'cursor.fetchone()' возвращен 'None', проверьте это, прежде чем делать запросы в результат – mirosval

+0

Теперь он работает. Спасибо за вашу помощь :) –

ответ

0

Я думаю, что ваш SQL может выглядеть так:

cursor.execute("""select * from maintable where kullad="?"""", (username,)) 

строка в SQL должен быть заключен в кавычки.

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