Я получаю ошибку "nontype", но я не могу понять, почему - PullRequest
0 голосов
/ 19 апреля 2020

, поэтому я в основном знаю, что означает Ошибка, но я не знаю, почему я ее получаю. Я хочу вставить свой файл cvs в таблицу. Некоторые строки пусты, поэтому я использую if None ...

Ошибка, которую я получаю:

Файл "C: \ Users \ Desktop \ IngestData.py", строка 64, в учреждениях cokey = temp [0] TypeError: объект 'NoneType' не может быть подписан

Надеюсь, кто-нибудь может мне помочь! Заранее спасибо!

def institutions(cur):
    with open('persons.csv', 'r', encoding="utf-8") as g:
        #tempo = None
        reader = csv.reader(g)
        next(reader)
        for row in reader:
            if row[4] is None:
                break
            else:
                cur.execute("SELECT COKEY FROM countries WHERE Name = (%s)", [row[4]])
                temp = cur.fetchone()
                cokey = temp[0]
                cur.execute("""INSERT INTO institutions (Name,cokey) VALUES (%s,%s)
                            ON CONFLICT DO NOTHING;""",[row[3],cokey])

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020

изменить строку if row[4] is None условие на if row[4] is not None следующим образом:

for row in reader:
    if row[4] is not None:
        cur.execute("SELECT COKEY FROM countries WHERE Name = (%s)", [row[4]])
                temp = cur.fetchone()
                cokey = temp[0]
                cur.execute("""INSERT INTO institutions (Name,cokey) VALUES (%s,%s)
                            ON CONFLICT DO NOTHING;""",[row[3],cokey])
0 голосов
/ 19 апреля 2020

Есть ли в вашей базе данных совпадающие строки? cur.fetchone() возвращает None, поэтому ваша ошибка говорит, что NoneType is not suscriptable.

def institutions(cur):
    with open('persons.csv', 'r', encoding="utf-8") as g:
        #tempo = None
        reader = csv.reader(g)
        next(reader)
        for row in reader:
            if row[4] is None:
                break
            else:
                cur.execute("SELECT COKEY FROM countries WHERE Name = (%s)", [row[4]])
                temp = cur.fetchone()
                if temp:
                    cokey = temp[0]
                    cur.execute("""INSERT INTO institutions (Name,cokey) VALUES (%s,%s) ON CONFLICT DO NOTHING;""",[row[3],cokey])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...