TypeError: объект 'NoneType' не может быть подписан при использовании fetchone()

      cur.execute(""" 
            CREATE TEMPORARY VIEW bobby_view AS
            SELECT heading1, heading2
            FROM bobby 
            WHERE heading2 = %s; """, (variable,))


            cur.execute("""
            SELECT d1.heading1
            FROM bobby_view d1
            WHERE d1.heading1 >= ALL (
                SELECT d2.heading1
                FROM bobby_view d2);
            """) 
            
            answer = cur.fetchone()[0]

Это приводит к ошибке:

TypeError: объект «NoneType» не подлежит подписке

Это структура моего кода. Переменная представляла собой целое число, введенное в качестве параметра функции, и оно было преобразовано в строку до приведенного выше кода.

Второй блок кода находит самые высокие данные заголовка 1. Я проверил это на своем собственном, и я вполне уверен, что это работает. Из-за этого я думаю, что ошибка возникает из-за того, что переменная не используется в представлении должным образом. Любая помощь или совет будут очень признательны.

2 ответа

Пытаться:

      cur.execute("""
        SELECT d1.heading1
        FROM bobby_view d1
        WHERE d1.heading1 >= ALL (
            SELECT d2.heading1
            FROM bobby_view d2);
        """) 
        
        answer = cur.fetchone()
        answer = answer[0] of answer else 'default'

вы можете обратиться к документации здесь

fetchone возвращает следующую строку набора результатов запроса и возвращает одну последовательность или None, если больше нет доступных строк, поэтому, если вы выбираете последнюю строку, произойдет ошибка. Попробуйте что-то вроде этого,

      answer = cur.fetchone()
while answer is not None:
  print(answer)
  answer = cur.fetchone()
Другие вопросы по тегам